Я получил по электронной почте от моего центра сертификации сертификат, который начинается так:
-----BEGIN CERTIFICATE-----
MIAGCSqGSIb3DQEHAqCAMIACAQExADALBgkqhkiG9w0BBwGggDCCBWMwggRLoAMC
и заканчивается так:
14lWAyMfs77oOghZtOxFNfeKW/9mz1Cvxm1XjRl4t7mi0VfqH5pLr7rJjhJ+xr3/
AAAxAAAAAAAAAA==
-----END CERTIFICATE-----
Я получил его по электронной почте и скопировал / вставил часть сертификата в файл test.cer (я учетверил - проверил, что копирую / вставляю именно ту часть)
Когда я пытаюсь использовать его в Apache 2, у меня возникает следующая ошибка:
[Mon Sep 30 23:15:36.754820 2013] [ssl:emerg] [pid 7544:tid 444] AH02241: Init: Unable to read server certificate from file C:/projects/test-ssl/test.cer
[Mon Sep 30 23:15:36.754820 2013] [ssl:emerg] [pid 7544:tid 444] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Mon Sep 30 23:15:36.754820 2013] [ssl:emerg] [pid 7544:tid 444] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=X509)
[Mon Sep 30 23:15:36.754820 2013] [ssl:emerg] [pid 7544:tid 444] AH02312: Fatal error initialising mod_ssl, exiting.
После небольшого исследования я обнаружил, что причиной может быть повреждение сертификата, поэтому, чтобы проверить его, я протестировал его с помощью
C:\Apache24\bin\openssl.exe x509 -in test.cer -text
и я получаю аналогичную ошибку:
unable to load certificate
8100:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:.\crypto\asn1\tasn_dec.c:1319:
8100:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:.\crypto\asn1\tasn_dec.c:381:Type=X509_CINF
8100:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:.\crypto\asn1\tasn_dec.c:751:Field=cert_info, Type=X509
8100:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:.\crypto\pem\pem_oth.c:83:
Я не эксперт в SSL, но сомневаюсь, что центр сертификации (Symantec) пришлет мне поврежденный сертификат.
Есть идеи, что может быть не так с этим сертификатом? Может ли это быть в другом формате, о котором я не знаю?
убедитесь, что после последнего дефиса в последней строке у вас НЕТ ОКОНЧАТЕЛЬНОГО ПЕРЕВОЗКА ПЕРЕВОЗКИ:
AAAxAAAAAAAAAA==
-----END CERTIFICATE-----
и нет
AAAxAAAAAAAAAA==
-----END CERTIFICATE-----
.
(пожалуйста, не обращайте внимания на точку :)
Обязательно укажите
. -------НАЧАТЬ------
и
. ----КОНЕЦ----
детали в точности так, как они были отправлены вам.
также обратите внимание, что начало должно быть первой строкой, а конец - последней. Не должно быть окружающего белого пространства. И, наконец ... Если вы имеете дело с Windows-машиной в миксе, есть вероятность, что новая строка (\ n) была добавлена (\ r) системой Windows. Шестнадцатеричный редактор, вероятно, самый быстрый способ проверить это.
Попробуйте импортировать этот сертификат в какое-нибудь хранилище NSS. Например, в Firefox, который использует NSS. Это другая реализация SSL (фактически первая), и вы можете видеть атрибуты сертификата ... конечно, если вам удастся импортировать. В противном случае у вас неправильный сертификат.