Изменение на самоподписанный сертификат приводит к проблеме связи? - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть клиент C#, который подключается к различным службам, таким как Elasti c Search, IdentityService, но также к службе WCF. Все они используют сертификат для шифрования связи, которая прекрасно работает. Проблема в том, что мне нужно вернуться к самозаверяющему сертификату, а сервису WCF он вообще не нравится.

При попытке подключиться к сервису я получаю «Это может быть связано с тем, что сертификат сервера не настроен должным образом с HTTP.SYS в случае HTTPS »? Я изменил

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

на

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;

Но это помогло. Я продвинулся немного дальше, но не намного.

Сертификат создается с помощью этой команды:

openssl req -x509 -newkey rsa:4096 -sha256 -utf8 -days 365 -nodes -config ./config/tiny_openssl.conf -keyout ./certificates/private.key -out ./certificates/certificate.crt 


# ./config/tiny_openssl.conf    
[CA_default]
copy_extensions = copy

[req]
default_bits = 4096
prompt = no
default_md = sha256
distinguished_name = req_distinguished_name
x509_extensions = v3_ca

[req_distinguished_name]
C = NO
ST = no
L = no
O = no
OU = myservice
emailAddress = myservice@no.com
CN = myservice Services Titan

[v3_ca]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names

[alternate_names]
DNS.1 = 192.168.130.29
DNS.2 = *.192.168.130.29
DNS.3 = app.192.168.130.29
DNS.4 = myservice
DNS.5 = myservice.local
DNS.6 = TITAN.myservice.local
# ...

Почему у меня возникают эти проблемы? Есть ли способ сгенерировать самоподписанный сертификат, который будет предоставлен WCF так же, как «настоящий»?

Редактировать: я добавил закрытый ключ в самоподписанный сертификат с openSSL.

1 Ответ

0 голосов
/ 26 февраля 2020

Я не знал, какой веб-сервер вы используете для размещения службы WCF и как привязать определенный сертификат к порту. Но в ОС Windows мне нужно добавить привязку сайта Https, когда я использую IIS для размещения службы WCF с безопасностью транспорта.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-configure-an-iis-hosted-wcf-service-with-ssl
В консольном приложении я обычно связывают сертификат с конкретным портом с помощью следующей команды:

netsh http add sslcert ipport = 0.0.0.0: 8000 certhash = 0000000000003ed9cd0c315bbb6dc1c08da5e6 appid = {00112233-4455-6677 8899-AABBCCDDEEFF}

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate
https://docs.microsoft.com/en-us/windows/win32/http/add-sslcert
Или такая же ошибка произойдет, когда клиентская сторона попытается подключите службу по протоколу HTTPS.

«Это может быть связано с тем, что сертификат сервера не настроен должным образом с HTTP.SYS…»

Оба Powershell и IIS имеют инструмент для создания сертификата. Это работает для меня.
https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...