- Что внутри
- Ошибка «Подключение не защищено»
- Ошибка «Часы спешат» / «Часы отстают»
- Ошибка «Подключение к сайту защищено не полностью» / «Части этой страницы не защищены»
- Ошибка «Этот сайт не может обеспечить безопасное соединение»
- Ошибка «На сервере используется слабый эфемерный открытый ключ Диффи-Хелмана»
- Gevent ssl with godaddy error: ssl.sslerror: [ssl: sslv3_alert_certificate_unknown] sslv3 alert certificate unknown (_ssl.c:1051)
- Openssl client authentication error: tlsv1 alert unknown ca: … ssl alert number 48
- Ssl – устранение сбоя квитирования предупреждения sslv3 при попытке использовать сертификат клиента –
- The problem:
- The solution:
- Конфликт между протоколами tls
- Настройки антивируса или файервола
- Неправильные настройки даты и времени
- Причины возникновения
- Протокол quic
- Устаревшая версия браузера
Что внутри
- Причины возникновения
- Примеры ошибок
Ошибка «Подключение не защищено»
В англоязычной версии браузера: Your connection is not private.
Код ошибки: ERR_CERT_COMMON_NAME_INVALID.
Что означает: доменное имя сайта не совпадает с именем в SSL-сертификате.
Что делать: почистить кэш или зайти на сайт с другого браузера.
Код ошибки: ERR_CERT_AUTHORITY_INVALID.
Что означает: SSL-сертификат выпустил неверный/неизвестный центр сертификации.
Что делать: почистить кэш или зайти на сайт с другого браузера.
Код ошибки: ERR_CERT_REVOKED.
Что означает: центр сертификации отозвал сертификат. Обычно это бывает, когда сертификат забыли продлить после истечения срока действия. На сайте он по-прежнему стоит, но уже не действует.
Что делать: почистить кэш или зайти на сайт с другого браузера.
Код ошибки: ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN.
Ошибка «Часы спешат» / «Часы отстают»
В англоязычной версии браузера: Your clock is behind / Your clock is ahead.
Код ошибки: ERR_CERT_DATE_INVALID.
Что означает: неправильная дата выпуска или истечения сертификата. Обычно такая ошибка возникает из-за того, что время на компьютере и сервере отличаются.
Решение: проверьте время и дату на устройстве. Если дата и время правильные, попробуйте очистить кэш.
Ошибка «Подключение к сайту защищено не полностью» / «Части этой страницы не защищены»
В англоязычной версии браузера: Your connection to this site is not fully secure / Parts of this page are not secure.
Ошибка «Этот сайт не может обеспечить безопасное соединение»
В англоязычной версии браузера: This site can’t provide a secure connection.
Код ошибки: ERR_SSL_VERSION_OR_CIPHER_MISMATCH.
Что означает: произошла ошибка при выборе протокола TLS. Обычно появляется, если сайт работает на сервере с устаревшим ПО или версия браузера слишком старая. В первом случае это ошибка на стороне сайта, во втором — на стороне посетителя.
Что делать: обновить браузер или использовать другой. Если не помогло, сайт использует более старые протоколы, которые можно включить только вручную. В этом случае есть риск, что личные данные, которые вы введете на сайте, попадут в руки мошенников.
Код ошибки: ERR_BAD_SSL_CLIENT_AUTH_CERT.
Что означает: браузер и сервер в последний момент не смогли установить безопасное соединение. Часто случается из-за антивируса. В его настройках что-то по ошибке не дает браузеру и серверу договориться, в итоге происходит сбой аутентификации.
Что делать: отключите антивирус или отключите в его настройках фильтрацию протоколов SSL/TLS.
Ошибка «На сервере используется слабый эфемерный открытый ключ Диффи-Хелмана»
В англоязычной версии браузера: Server has a weak ephemeral Diffie-Hellman public key.
Код ошибки: ERR_SSL_WEAK_EPHEMERAL_DH_KEY.
Что означает: на сайте стоит слабый SSL-сертификат.
Что делать: лучше закройте сайт, если увидели такое предупреждение. Ваши данные здесь не в безопасности.
Gevent ssl with godaddy error: ssl.sslerror: [ssl: sslv3_alert_certificate_unknown] sslv3 alert certificate unknown (_ssl.c:1051)
I’ve got Webhosting on GoDaddy with their SSL certificate installed.
I’m trying to send the https POST request to my Python backend on my own server (with static IP) which is running gevent WSGIServer like this:
https_server = WSGIServer(('<backend ip>', 3000),
appFlask,
keyfile='server.key',
certfile='server.crt',
)
The server.key and server.crt I created by copy/paste from goddady->cPanelAdmin-> Manage SSL Hosts -> Autofill by Domain.
The Certificate: (CRT) -> server.crt. The Private Key (KEY) -> server.key.
The CRT:
-----BEGIN CERTIFICATE-----
MIIGQzCCBSugAwIBAgIJANvQSPtAlkYyMA0GCSqGSIb3DQEBCwUAMIG0MQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEa
MBgGA1UEChMRR29EYWRkeS5jb20sIEluYy4xLTArBgNVBAsTJGh0dHA6Ly9jZXJ0
cy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzEzMDEGA1UEAxMqR28gRGFkZHkgU2Vj
dXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTE5MTEzMDEzNTAyM1oX
DTIwMTEzMDA4MTAzN1owPTEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRh
dGVkMRgwFgYDVQQDEw9hcXRzNjU1Mzc5ay5jb20wggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQC/sQsu SEMu3TbaaCx96hw8A8YLjQehtm16t9cx5KOKOld
chA1rUVZXZq5LLbgXJ/11Ws4z oqg8T7xmhUPB/sBbP0wd0/wyqAKzkCEfZndV52
Y4oc7 P0NVC5YSTyoMQ1/bx12 PcpkG0LTUbz0F91Z2ZuO/Cr9l3NaR07v35zhKC
aTDJVd1sSwJkRQ9StUXEpQD8M107vhRuBsPqR49qC0vbwXByzK1pC7DTrz2Z0HFR
l8u0d86M HHZmn3n/vRfXA0PIW16enjLkdZIKMmidvCJmRCUUA6KSljhJz5nZuOF
G2IrsWUqW3AX7Dt8BL2WX/blToikbC5oiaezFoR5AgMBAAGjggLMMIICyDAMBgNV
HRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8B
Af8EBAMCBaAwOAYDVR0fBDEwLzAtoCugKYYnaHR0cDovL2NybC5nb2RhZGR5LmNv
bS9nZGlnMnMxLTE1NDcuY3JsMF0GA1UdIARWMFQwSAYLYIZIAYb9bQEHFwEwOTA3
BggrBgEFBQcCARYraHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv
c2l0b3J5LzAIBgZngQwBAgEwdgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhho
dHRwOi8vb2NzcC5nb2RhZGR5LmNvbS8wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jZXJ0
aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9nZGlnMi5jcnQwHwYDVR0j
BBgwFoAUQMK9J47MNIMwojPX 2yz8LQsgM4wLwYDVR0RBCgwJoIPYXF0czY1NTM3
OWsuY29tghN3d3cuYXF0czY1NTM3OWsuY29tMB0GA1UdDgQWBBTCriFH/fyxral7
BYLxnzTLClIEIDCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB3AKS5CZC0GFgUh7sT
osxncAo8NZgE RvfuON3zQ7IDdwQAAABbryTxeMAAAQDAEgwRgIhAJ2E4BRwFSUd
kxChyaNNt9rW8yUovUzHMJBGEm48FgKXAiEAxgo7kNBGm0wmQEUX7gxY6xG4pRLv
5T0JoUf31mCvEuYAdgBep3P531bA57U2SH3QSeAyepGaDIShEhKEGHWWgXFFWAAA
AW68k8a8AAAEAwBHMEUCIQC661NrwQ pn9vG9F1Aw9rJrrlHldzPXmCOoeih8cQI
PwIgQaMQ1KAyVz8zI8wGoJ3S snGHQq88N oivNeeSggIQwwDQYJKoZIhvcNAQEL
BQADggEBALZuZ9oXPf8zazPGqiIZrok/zVi7DrimGKQfgVnbR3bE0IhYUFlbO/GN
eH/AcDgHnR8Rdb3t4sjD7pTe1jaD/Jrj0Pz3zhRXKh4l47ERQcRTUKqoNnHW/yxv
pVHJ/wU/h DVfAvKkMiIyPV/EbjZg5Vys09tzIDSSjA0n l2BYq6JY7Z/SWf6QX
CZNsDocBW05Vf0Ot8LDswxgIf1hpw0x/icQj/wlgMdCRIlS46ai293r2A TcFj5a
aSpcpIT7Yf6NJPOlMNhPiTABAkzb34iA47Ox4S0pFImLuBVqYDIw0kM tM0pdKuB
nd0IIfQhBswJgpAr R57vuggExKtxw=
-----END CERTIFICATE-----
The Certificate Authority Bundle:
-----BEGIN CERTIFICATE-----
MIIE0DCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTEx
MDUwMzA3MDAwMFoXDTMxMDUwMzA3MDAwMFowgbQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsG
A1UECxMkaHR0cDovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQDEypHbyBE
YWRkeSBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQC54MsQ1K92vdSTYuswZLiBCGzDBNliF44v/z5lz4/OYuY8UhzaFkVLVat4
a2ODYpDOD2lsmcgaFItMzEUz6ojcnqOvK/6AYZ15V8TPLvQ/MDxdR/yaFrzDN5ZBUY4RS1T4KL7Q
jL7wMDge87Am GZHY23ecSZHjzhHU9FGHbTj3ADqRay9vHHZqm8A29vNMDp5T19MR/gd71vCxJ1g
O7GyQ5HYpDNO6rPWJ0 tJYqlxvTV0KaudAVkV4i1RFXULSo6Pvi4vekyCgKUZMQWOlDxSq7neTOv
DCAHf jfBDnCaQJsY1L6d8EbyHSHyLmTGFBUNUtpTrw700kuH9zB0lL7AgMBAAGjggEaMIIBFjAP
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUQMK9J47MNIMwojPX 2yz
8LQsgM4wHwYDVR0jBBgwFoAUOpqFBxBnKLbv9r0FQW4gwZTaD94wNAYIKwYBBQUHAQEEKDAmMCQG
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5nb2RhZGR5LmNvbS8wNQYDVR0fBC4wLDAqoCigJoYkaHR0
cDovL2NybC5nb2RhZGR5LmNvbS9nZHJvb3QtZzIuY3JsMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEG
CCsGAQUFBwIBFiVodHRwczovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMA0GCSqGSIb3
DQEBCwUAA4IBAQAIfmyTEMg4uJapkEv/oV9PBO9sPpyIBslQj6Zz91cxG7685C/b LrTW C05 Z5
Yg4MotdqY3MxtfWoSKQ7CC2iXZDXtHwlTxFWMMS2RJ17LJ3lXubvDGGqv QqG 6EnriDfcFDzkSn
E3ANkR/0yBOtg2DZ2HKocyQetawiDsoXiWJYRBuriSUBAA/NxBti21G00w9RKpv0vHP8ds42pM3Z
2Czqrpv1KrKQ0U11GIo/ikGQI31bS/6kA1ibRrLDYGCD H1QQc7CoZDDu 8CL9IVVO5EFdkKrqeK
M 2xLXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDAB
-----END CERTIFICATE-----
The client code is React app with hash router where on the button click the following is called:
let res = await axios
.create({ baseURL: "https://<backend ip>:3000" })
.post("/server_auth_user", data_obj)
.then(result => {
if (result.status === 200 && result.data.response) {
console.log(result);
Auth.login(() => {
this.props.history.push("/screens");
...
This is what happens when I run:
openssl s_client -connect <godaddy host>:443 -key 'server.key' -cert 'server.crt'
CONNECTED(00000005)
---
Certificate chain
0 s:OU = Domain Control Validated, CN = aqts655379k.com
i:C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2
1 s:C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2
i:C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2
---
Server certificate
Server certificate
-----BEGIN CERTIFICATE-----
MIIGQzCCBSugAwIBAgIJANvQSPtAlkYyMA0GCSqGSIb3DQEBCwUAMIG0MQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEa
MBgGA1UEChMRR29EYWRkeS5jb20sIEluYy4xLTArBgNVBAsTJGh0dHA6Ly9jZXJ0
cy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzEzMDEGA1UEAxMqR28gRGFkZHkgU2Vj
dXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTE5MTEzMDEzNTAyM1oX
DTIwMTEzMDA4MTAzN1owPTEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRh
dGVkMRgwFgYDVQQDEw9hcXRzNjU1Mzc5ay5jb20wggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQC/sQsu SEMu3TbaaCx96hw8A8YLjQehtm16t9cx5KOKOld
chA1rUVZXZq5LLbgXJ/11Ws4z oqg8T7xmhUPB/sBbP0wd0/wyqAKzkCEfZndV52
Y4oc7 P0NVC5YSTyoMQ1/bx12 PcpkG0LTUbz0F91Z2ZuO/Cr9l3NaR07v35zhKC
aTDJVd1sSwJkRQ9StUXEpQD8M107vhRuBsPqR49qC0vbwXByzK1pC7DTrz2Z0HFR
l8u0d86M HHZmn3n/vRfXA0PIW16enjLkdZIKMmidvCJmRCUUA6KSljhJz5nZuOF
G2IrsWUqW3AX7Dt8BL2WX/blToikbC5oiaezFoR5AgMBAAGjggLMMIICyDAMBgNV
HRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8B
Af8EBAMCBaAwOAYDVR0fBDEwLzAtoCugKYYnaHR0cDovL2NybC5nb2RhZGR5LmNv
bS9nZGlnMnMxLTE1NDcuY3JsMF0GA1UdIARWMFQwSAYLYIZIAYb9bQEHFwEwOTA3
BggrBgEFBQcCARYraHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv
c2l0b3J5LzAIBgZngQwBAgEwdgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhho
dHRwOi8vb2NzcC5nb2RhZGR5LmNvbS8wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jZXJ0
aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9nZGlnMi5jcnQwHwYDVR0j
BBgwFoAUQMK9J47MNIMwojPX 2yz8LQsgM4wLwYDVR0RBCgwJoIPYXF0czY1NTM3
OWsuY29tghN3d3cuYXF0czY1NTM3OWsuY29tMB0GA1UdDgQWBBTCriFH/fyxral7
BYLxnzTLClIEIDCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB3AKS5CZC0GFgUh7sT
osxncAo8NZgE RvfuON3zQ7IDdwQAAABbryTxeMAAAQDAEgwRgIhAJ2E4BRwFSUd
kxChyaNNt9rW8yUovUzHMJBGEm48FgKXAiEAxgo7kNBGm0wmQEUX7gxY6xG4pRLv
5T0JoUf31mCvEuYAdgBep3P531bA57U2SH3QSeAyepGaDIShEhKEGHWWgXFFWAAA
AW68k8a8AAAEAwBHMEUCIQC661NrwQ pn9vG9F1Aw9rJrrlHldzPXmCOoeih8cQI
PwIgQaMQ1KAyVz8zI8wGoJ3S snGHQq88N oivNeeSggIQwwDQYJKoZIhvcNAQEL
BQADggEBALZuZ9oXPf8zazPGqiIZrok/zVi7DrimGKQfgVnbR3bE0IhYUFlbO/GN
eH/AcDgHnR8Rdb3t4sjD7pTe1jaD/Jrj0Pz3zhRXKh4l47ERQcRTUKqoNnHW/yxv
pVHJ/wU/h DVfAvKkMiIyPV/EbjZg5Vys09tzIDSSjA0n l2BYq6JY7Z/SWf6QX
CZNsDocBW05Vf0Ot8LDswxgIf1hpw0x/icQj/wlgMdCRIlS46ai293r2A TcFj5a
aSpcpIT7Yf6NJPOlMNhPiTABAkzb34iA47Ox4S0pFImLuBVqYDIw0kM tM0pdKuB
nd0IIfQhBswJgpAr R57vuggExKtxw=
-----END CERTIFICATE-----
subject=OU = Domain Control Validated, CN = <godaddy.host>
issuer=C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2
---
No client certificate CA names sent
Peer signing digest: SHA512
Peer signature type: RSA
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3552 bytes and written 443 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: A1A0E86F59695161F06029EADB6F26C491F01A511A417CCCF07948F095139E3B
Session-ID-ctx:
Master-Key: DAA60D38F7D74D553478FB3B74DE8F7BE315D003FBF3F6847F812CF25693CFC3EDDADB3F4A2A2D278F7239330E156D92
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - da 97 5d f6 a9 8a 2d 9b-a0 dd 6f 3c 65 58 11 55 ..]...-...o<eX.U
0010 - c4 5d 24 c0 f3 03 6d 2e-16 75 9a 6f 9f 29 2d 4e .]$...m..u.o.)-N
0020 - 92 98 92 24 27 ab 92 2e-31 7d 83 26 70 ba c8 36 ...$'...1}.&p..6
0030 - e6 86 62 58 2a e1 8a be-1c 08 d0 a2 30 e6 36 8c ..bX*.......0.6.
0040 - be b8 6d 5b 72 37 6b fd-32 f5 16 3b 0b 24 e1 10 ..m[r7k.2..;.$..
0050 - 2d 71 f5 8d 1f bf d1 5a-74 2b d1 cd 1d ec f1 f9 -q.....Zt ......
0060 - 6f b3 89 66 10 fa d3 bb-df cc cc 94 fa 61 2b 54 o..f.........a T
0070 - 0a 85 ac 0c f5 91 c8 53-06 a4 05 bc a8 bf 18 dc .......S........
0080 - 0f cc 71 46 5f af 23 fd-62 48 32 c8 95 20 8f bb ..qF_.#.bH2.. ..
0090 - f3 80 aa ca b0 cf 2e 5c-58 84 d9 65 e5 7e 57 a3 .......X..e.~W.
00a0 - 09 99 98 72 91 77 21 a1-b9 3e a1 4e 4f 1b af 21 ...r.w!..>.NO..!
00b0 - ff 02 97 71 90 b6 42 51-04 17 c3 e8 ca 8c 35 f9 ...q..BQ......5.
00c0 - 33 07 ca 32 2f 9d c1 7e-59 52 37 db e0 c8 fa bf 3..2/..~YR7.....
Start Time: 1575195127
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
The strange things are:
- on some devices/browsers I manage to go beyond the Submit button but then the redirected page
/screensshows not secured, though certificate is valid - on other browsers I see in Python log – as if the godaddy now tries to validate my Python backend certificate?:
ssl.SSLError: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl.c:1076)
2021-12-01T09:59:25Z <Greenlet at 0x1a8fefe8048: _handle_and_close_when_done(<bound method StreamServer.wrap_socket_and_handle , <bound method StreamServer.do_close of <WSGIServer, (<gevent._socket3.socket [closed] object, fd=-1, )> failed with SSLError
Openssl client authentication error: tlsv1 alert unknown ca: … ssl alert number 48
I’ve generated a certificate using openssl and place it on the client’s machine, but when I try to connect to my server using that certificate, I error mentioned in the subject line back from my server.
Here’s what I’ve done.
1) I do a test connect using openssl to see what the acceptable client certificate CA names are for my server, I issue this command from my client machine to my server:
openssl s_client -connect myupload.mysite.net:443/cgi-bin/posupload.cgi -prexit
and part of what I get back is as follow:
Acceptable client certificate CA names
/C=US/ST=Colorado/L=England/O=Inteliware/OU=Denver Office/CN=Tim Drake/emailAddress=tdrake@mysite.com
/C=US/ST=Colorado/O=Inteliware/OU=Denver Office/CN=myupload.mysite.net/emailAddress=tdrake@mysite.com
2) Here is what is in the apache configuration file on the server regarding SSL client authentication:
SSLCACertificatePath /etc/apache2/certs
SSLVerifyClient require
SSLVerifyDepth 10
3) I generated a self-signed client certificate called “client.pem” using mypos.pem and mypos.key, so when I run this command:
openssl x509 -in client.pem -noout -issuer -subject -serial
here is what is returned:
issuer= /C=US/ST=Colorado/O=Inteliware/OU=Denver Office/CN=myupload.mysite.net/emailAddress=tdrake@mysite.com
subject= /C=US/ST=Colorado/O=Inteliware/OU=Denver Office/CN=mlR::mlR/emailAddress=admin@inteliware.com
serial=0E
(please note that mypos.pem is in /etc/apache2/certs/ and mypos.key is saved in /etc/apache2/certs/private/)
4) I put client.pem on the client machine, and on the client machine, I run the following command:
openssl s_client -connect myupload.mysite.net:443/cgi-bin/posupload.cgi -status -cert client.pem
and I get this error:
CONNECTED(00000003)
OCSP response: no response sent
depth=1 /C=US/ST=Colorado/L=England/O=Inteliware/OU=Denver Office/CN=Tim Drake/emailAddress=tdrake@mysite.com
verify error:num=19:self signed certificate in certificate chain
verify return:0
574:error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:/SourceCache/OpenSSL098/OpenSSL098-47/src/ssl/s3_pkt.c:1102:SSL alert number 48
574:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-47/src/ssl/s23_lib.c:182:
I’m really stumped as to what I’ve done wrong. I’ve searched quite a bit on this error and what I found is that people are saying the issuing CA of the client’s certificate is not trusted by the server, yet when I look at the issuer of my client certificate, it matches to one of the accepted CA returned by my server.
Can anyone help, please?
Thank you in advance.
Ssl – устранение сбоя квитирования предупреждения sslv3 при попытке использовать сертификат клиента –
Я пытаюсь подключиться к сервису, которому для авторизации требуется сертификат. Процесс заключается в том, что я отправляю службе CSR-файл. Сервис подписывает CSR и отправляет мне сертификат, который я использую для подключения.
Я сгенерировал CSR с помощью следующей командной строки:
openssl req -new -nodes -newkey rsa:2048 -keyout cert.key -out cert.csrЯ взял содержимое cert.csr и отправил им. Они генерируют сертификат клиента, и я получил обратно файл PEM.
Теперь я пытаюсь подключиться, используя их файл сертификата в SSLCERT для curl () и предоставляя закрытый ключ из cert.key как CURLOPT_SSLKEY – (который я получил на шаге 1).
Не удается:
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Что я делаю не так в этом процессе?
Это работает , когда я пытаюсь использовать полученный тестовый сертификат, включающий закрытый ключ от службы (самоподписанный сертификат). Но когда я использую сертификат, который они сгенерировали из моего CSR, а затем использую мой закрытый ключ в качестве ключа, возникает ошибка с ошибкой рукопожатия.
Итак, я знаю, что это не имеет отношения к тому, что openssl / curl не поддерживает v3 / TLS и т.д., что другие при поиске решения обнаружили, что их проблема.
Вот что я бегу:
curl -i -v --request POST https://service.com/ --cert clientcert.pem --key private_key.pem --cert-type pem --tlsv1.1 --insecure
* Connected to service.com (1xx.xxx.xxx.xx) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Request CERT (13):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS handshake, CERT verify (15):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS alert, Server hello (2):
* error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
* Closing connection 0
Запуск следующих версий: curl 7.35.0 (x86_64-pc-linux-gnu) libcurl / 7.35.0 OpenSSL / 1.0.1f zlib / 1.2.8 libidn / 1.28 librtmp / 2.3
Не однозначный ответ, но слишком много, чтобы поместиться в комментариях:
Я предполагаю, что они предоставили вам сертификат, у которого либо неправильный эмитент (хотя их сервер мог использовать для этого более конкретный код предупреждения), либо неправильная тема. Мы знаем, что сертификат совпадает с вашим частным ключом, потому что оба curl и openssl client соединили их в пару, не пожаловавшись на несоответствие; но мы на самом деле не знаем, что он соответствует их желаемому ЦС, потому что ваш curl использует openssl, а клиент openssl SSL НЕ обеспечивает соответствие настроенного сертификата клиента certreq.CAs.
Сделайте openssl x509 <clientcert.pem -noout -subject -issuer и то же самое с сертификатом из теста P12, который работает. Сделайте openssl s_client (или проверьте тот, который вы сделали) и посмотрите под Acceptable client certificate CA names; имя там или одно из них должно совпадать (точно!) с эмитентом (ами) ваших сертификатов. Если нет, то, скорее всего, это ваша проблема, и вам необходимо проверить с ними, что вы отправили CSR в правильное место и правильным способом. Возможно, у них разные режимы в разных регионах или бизнес-направлениях, или тестирование vs prod, или active vs pending и т. Д.
Если эмитент вашего сертификата совпадает с желаемым CA, сравните его тему с рабочим (test-P12): они в аналогичном формате? есть ли какие-то компоненты в рабочем, которых нет в вашем? Если они позволяют это, попробуйте сгенерировать и отправить новый CSR с именем субъекта, точно таким же, как у test-P12, или как можно более близким, и посмотрите, даст ли это сертификат, который работает лучше. (Для этого не нужно создавать новый ключ , но если вы решите, отслеживайте, какие сертификаты соответствуют каким ключам, чтобы не перепутать их.) Если это не так. Это не поможет посмотреть на расширения сертификатов с openssl x509 <cert -noout -text на предмет каких-либо различий, которые могут быть разумно связаны с авторизацией субъекта, например KeyUsage, ExtendedKeyUsage, может быть Policy, может быть Constraints, может быть, даже что-то нестандартное.
Если ничего не помогает, спросите операторов серверов, что их журналы говорят о проблеме, или, если у вас есть доступ, посмотрите журналы самостоятельно.
Какой закрытый ключ SSL следует отправить вместе с сертификатом клиента?
Никто из них 🙂
Одна из привлекательных особенностей клиентских сертификатов заключается в том, что они не делают глупых вещей, таких как передача секрета (например, пароля) в виде простого текста на сервер (HTTP basic_auth). Пароль по-прежнему используется для разблокировки ключа для сертификата клиента, просто он не используется напрямую во время обмена или для аутентификации клиента.
Вместо этого клиент выбирает временный случайный ключ для этого сеанса. Затем клиент подписывает временный случайный ключ своим сертификатом и отправляет его на сервер (некоторая рука отказывается). Если злоумышленник что-то перехватит, это случайно, поэтому его нельзя будет использовать в будущем. Его нельзя даже использовать для второго запуска протокола с сервером, потому что сервер также выберет новое случайное значение.
Не удается: ошибка: 14094410: подпрограммы SSL: SSL3_READ_BYTES: сбой подтверждения подтверждения sslv3
Используйте TLS 1.0 и выше; и используйте указание имени сервера.
Вы не предоставили никакого кода, поэтому мне не ясно, как сказать вам, что делать. Вместо этого вот командная строка OpenSSL для проверки:
openssl s_client -connect www.example.com:443 -tls1 -servername www.example.com
-cert mycert.pem -key mykey.pem -CAfile <certificate-authority-for-service>.pem
Вы также можете использовать -CAfile, чтобы избежать «ошибки проверки: num = 20» . См., Например, «проверить ошибку: num = 20» при подключении к gateway.sandbox.push.apple.com.
The problem:
The DST Root CA X3 certificate, which letsencrypt uses, has expired. They had already started to use the new ISRG Root X1 certificate additionally for multiple years, but some old devices (for example android < 7.1.1) does not know this new certificate.
But letsencrypt has noticed that many old ssl implementations (including android) don’t check if a certificate has expired. So they can still use the old DST Root CA X3 certificate for these devices. Newer ssl implementation can use the new ISRG Root X1 certificate instead.
The solution:
To keep all newer ssl implementation working, you need to use only the new ISRG Root X1 certificate. To do this, you must use the ISRG Root X1 chain. But this will break the compatible with older device, which don’t know the new ISRG Root X1 certificate yet.
Конфликт между протоколами tls
Протокол TLS — это набор правил, по которым браузер устанавливает безопасное соединение с сервером, где лежит сайт. Что-то вроде инструкции для компьютеров, которая помогает им договориться о шифровании.
На момент написания статьи есть семь версий этого протокола. Половину из них уже признали небезопасными, но на некоторых сайтах устаревшие протоколы всё ещё используют.
Иногда бывает так, что браузер использует последнюю версию TLS, а сервер — нет. В итоге появляется ошибка подключения SSL, потому что стороны не могут договориться о шифровании.
Сайт может начать открываться, если вы разрешите своему браузеру использовать устаревшие протоколы, но это небезопасно. Личные данные, которые вы введете на сайте после этого могут украсть. Делайте это только в крайнем случае, а потом лучше верните всё, как было.
В Internet Explorer/Microsoft Edge нажмите для этого сочетание клавиш Windows R и введите inetcpl.cpl.
В открывшемся окне перейдите на вкладку «Дополнительно» (Advanced) и включите все протоколы SSL и TLS. Затем, нажмите «ОК». Не забудьте перезагрузить компьютер.
В старых версиях Google Chrome по умолчанию поддерживаются все версии протокола, кроме новейшего TLS 1.3. Чтобы его включить, введите в адресной строке chrome://flags/#tls13-variant. Затем в первой же строке установите значение “Default”.
В Mozilla Firefox введите в адресной строке about:config. Затем найдите параметр security.tls.version.min и установите значение «1» вместо «2».
Затем найдите параметр security.tls.version.max и установите значение «4» вместо «3».
Настройки антивируса или файервола
Бывает, антивирус не даёт зайти на сайт, потому что по ошибке добавил его в черный список или закрыл 443 порт, через который и происходит SSL подключение. Попробуйте отключить антивирус и зайти на сайт снова.
Неправильные настройки даты и времени
Браузеру может показаться, что установленный на сайте сертификат недействителен, если время у вас на компьютере и на сервере, где лежит сайт, отличается. Убедитесь, что у вас стоит правильные время и дата.
Причины возникновения
Все ошибки подключения SSL можно разделить на две группы:
- Ошибки на стороне браузера. Посетитель может исправить их сам.
- Ошибки на стороне сайта. Их может исправить только владелец сайта.
Чтобы определить, какой тип ошибки в вашем случае, проверьте сайт при помощи сервиса decoder.link.
Если при проверке появилась надпись “It’s all good. We have not detected any issues”, проблема на стороне браузера. Если вместо надписи есть какая-то ошибка, проблема на стороне сайта.
С ошибками на стороне сайта всё понятно: если вы не владелец сайта, тут ничего не сделать. Возможно, истёк срок годности сертификата или его неправильно установили. А может что-то не так с настройками сервера. Остаётся только ждать, когда владелец сайта заметит и устранит ошибку.
Разберёмся с ошибками подключения SSL на стороне браузера. Обычно их можно быстро исправить и всё-таки попасть на сайт. Вот основные причины, из-за которых они возникают.
Протокол quic
QUIC — это новая технология передачи данных в интернете. Она используется только в Google Chrome и браузерах, сделанных на движке Chromium: Opera, Microsoft Edge, Brave.
Поскольку технология новая, более старые версии серверов её не поддерживают. Из-за этого могут возникать ошибки.
Как вариант можете попробовать отключить QUIC и зайти на сайт ещё раз. Чтобы сделать это в Google Chrome, перейдите по адресу chrome://flags и введите в поиске QUIC. Затем выберите в выпадающем списке опцию Disabled.
Устаревшая версия браузера
На сайте может быть технология, которая не поддерживается в вашей версии браузера. Например, новый алгоритм шифрования, протокол передачи данных или что-то в таком роде. После обновления проблема должна пройти.
