У меня есть клиент 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.