На одном из моих серверов я наблюдаю следующую проблему с парольной фразой SSL: некоторые сертификаты передают ее, не запрашивая пароль, а некоторые другие продолжают его запрашивать.
Я настроил его глобально:
SSLPassPhraseDialog exec:/path/to/passphrase
но когда я перезапускаю apache
, он запрашивает у меня кодовую фразу для нескольких доменов, которые используют один и тот же подстановочный сертификат.
Есть идеи, что может вызвать это?
чтобы проверить кодовую фразу, я запустил
(openssl x509 -noout -modulus -in server.pem | openssl md5 ; openssl rsa -noout -modulus -in server.key | openssl md5) | uniq
и я получаю один хэш, что означает, что они совпадают, пароль одинаковый
[Wed Mar 05 17:13:23 2014] [error] Init: Pass phrase incorrect
[Wed Mar 05 17:13:23 2014] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Wed Mar 05 17:13:23 2014] [error] SSL Library Error: 218640442 error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error
[Wed Mar 05 17:13:23 2014] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Wed Mar 05 17:13:23 2014] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
[Wed Mar 05 17:13:23 2014] [error] SSL Library Error: 67710980 error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Wed Mar 05 17:13:23 2014] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Wed Mar 05 17:13:23 2014] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
Как я могу проверить, вызвано ли это политикой selinux, когда я удаляю кодовую фразу, все начинает работать? Кстати, на данный момент SELinux отключен на моем сервере
Любая помощь ?
Я исправил эту проблему, это было связано с тем, что некоторые сертификаты были подписаны с другим паролем
echo "Password \$21"
и с
echo 'Password \$21'
Таким образом, обратная косая черта в первом примере была escape-символом для $, а во втором примере у нас есть обратная косая черта и $, используемые в пароле.
Написание простого скрипта решит эту проблему