Назад | Перейти на главную страницу

Какие промежуточные сертификаты требуются (Apache)?

На моем сервере HPUX / Apache появляется следующая ошибка:

Проверка сертификата: ошибка (20): невозможно получить сертификат местного эмитента

Когда я смотрю на свои корневые сертификаты, у меня есть корневой сертификат DoD Root CA-2, включенный в сервер.

У моего сертификата сайта есть цепочка DoD Root CA-2 -> DoD CA-28 -> Сертификат.

когда я делаю следующее, я получаю сообщение об ошибке:

-bash-4.3$ openssl s_client -connect mysite:443 -showcerts
CONNECTED(00000003)
depth=0 /C=US/O=U.S. Government/OU=DoD/OU=PKI/OU=USN/CN=mysite
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=US/O=U.S. Government/OU=DoD/OU=PKI/OU=USN/CN=mysite
verify error:num=27:certificate not trusted
verify return:1
depth=0 /C=US/O=U.S. Government/OU=DoD/OU=PKI/OU=USN/CN=mysite
verify error:num=21:unable to verify the first certificate
verify return:1
20509:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1102:SSL alert number 40
20509:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:182:

Кроме ошибки и подтверждения от openssl выше, мой сайт работает большую часть времени (у меня действительно не хватает памяти, что вызывает у меня проблемы).

Нужен ли мне сертификат DoD CA-28 в моем корневом хранилище на моем сервере?

Для Apache HTTPD вам «требуется» только ключ RSA и сертификат, подписанный X509 или самоподписанный. Никаких CA не требуется.

Хотя некоторые клиенты будут жаловаться, если не увидят, что у вас есть полная цепочка или хотя бы цепочка центров сертификации, за исключением корневого, если он у них есть.

Предположим, что существует подписывающий орган с 3 CA, называемый EXAMPLE, который подписал ваш сертификат.

ROOT-EXAMPLE <-- browsers may have this if it is a known authority
SUB-EXAMPLE  <--- you haven't included this one
SIGNER-EXAMPLE <--- you haven't included this one
YOURCERT <-- you are offering this one
YOURKEY <-- you are offering this one

Вкратце, чтобы иметь возможность шифровать-дешифровать Apache HTTPd, нужны только первые два, начиная снизу, и вы должны добавить все остальное (кроме корня, если он включен в браузеры, что тогда в этом нет необходимости.

Как это сделать с помощью Apache HTTPD (включая все)? просто

SSLCertificateKeyFile /path/to/rsa.key
SSLCertificateFile /path/to/chain.crt <-- here you can include the signed and the ca's from root to leaf.