У меня есть подписанный nic-сертификат, который я без особого успеха пытаюсь настроить на своем сервере apache :(. Для создания этого сертификата им нужен был CSR с моей стороны. Я создал CSR, используя следующие команды:
Сначала создается файл хранилища ключей с помощью команды -
keytool -genkey -alias generated -keyalg RSA -keysize 2048 -keystore generated.keystore
Созданный CSR из этого хранилища ключей с помощью следующей команды:
keytool -certreq -keyalg RSA -alias generated -file generated.csr -keystore generated.keystore
Мой csr выглядел так:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIC7jCCAdYCAQAwgagxCzAJBgNVBAYTAklOMRAwDgYDVQQIEwdNYW5pcHVyMQ8wDQYDVQQHEwZJ
bXBoYWwxNTAzBgNVBAoTLE1hbmlwdXIgU3RhdGUgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBTb2Np
ZXR5MRkwFwYDVQQLDBBTUCBTU0RHICYgZUZvcm1zMSQwIgYDVQQDExt3d3cubWFuaXB1cnBvcnRh
......
......
bC5tbi5nb3YuaW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRVxKwt/xCiAgGfuCs
ud5kcf+BKQURwKExLHUeUNQHpT1IMcx/is9anki+u3ijFbV1ei/ybgSRzFgesem+yTUutTYCgyqd
U7ZxJTuKmHDkZCVEBzGxl+Jl8AQxHHQzBI9PWuCBURR0q1eNeasfO3yWZpkRvK58uXf6vGZakYHZ
-----END NEW CERTIFICATE REQUEST-----
Для этого они создали файл сертификата (.cer), который выглядит так:
-----BEGIN CERTIFICATE-----
MIIEKTCCAxGgAwIBAgIJEiLiRbpaYkqOMA0GCSqGSIb3DQEBCwUAMGYxCzAJBgNV
BAYTAklOMSQwIgYDVQQKExtOYXRpb25hbCBJbmZvcm1hdGljcyBDZW50cmUxDzAN
BgNVBAsTBlN1Yi1DQTEgMB4GA1UEAxMXTklDIHN1Yi1DQSBmb3IgTklDIDIwMTEw
HhcNMTIwMTIzMDcyNzEyWhcNMTQwMTIyMDcyNzEyWjAmMSQwIgYDVQQDExt3d3cu
bWFuaXB1cnBvcnRhbC5tbi5nb3YuaW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDRVxKwt/xCiAgGfuCsud5kcf+BKQURwKExLHUeUNQHpT1IMcx/is9a
nki+u3ijFbV1ei/ybgSRzFgesem+yTUutTYCgyqdU7ZxJTuKmHDkZCVEBzGxl+Jl
8AQxHHQzBI9PWuCBURR0q1eNeasfO3yWZpkRvK58uXf6vGZakYHZ9vWAYP7uhtMP
5je1Scqcc09vB5F33ux2svkwzXPxB+KOwx2stvKJ93Vw2VChLLDNByW321L/A7AA
nwZ4Jdplh/z+armGZtQO27kgNQdWAA7wQ2wr
..
...
..
fDpYOCBy87y4C6CrCaR9WMrAOP2PIazHZFKNjz0sng6TOVQ+SxBW0mmBWJamt2DJ
RoBV8pUPMvKmO6ptqklhWOYe4lIIbowhM9K7qyQR03ICiGwMuocj6IbGrJwdfgr1
CTm+L1Zs7UNMJvNxBXTZ41gd9tRazFdo5yAqKO4nPXys0oV6NAmFtUjix+sy6rkn
4O5pyizzRdB2ABcBbpn2yTEggerL2SBwxEwoD1WR3+b09UNZKMBDkHcd8HuJ3NpO
F4b5LXnKDXNG9ZKFUVxcDM70mD0YH/ypCthp/2aBFzV46yF73hqXaQwMNQY+dd+R
orWm8k2LfwFOxs5jqQ==
-----END CERTIFICATE-----
Конфигурация Apache в файле ssl.conf:
SSLCertificateFile /etc/pki/tls/certs/signed.cer
SSLCertificateKeyFile /etc/pki/tls/private/generated.keystore
Теперь, когда я запускаю свой apache, я получаю сообщение об ошибке:
[Tue Jan 24 13:10:38 2012] [error] Init: Private key not found
[Tue Jan 24 13:10:38 2012] [error] SSL Library Error: 218710120 error:0D094068:asn1 encoding routines:d2i_ASN1_SET:bad tag
[Tue Jan 24 13:10:38 2012] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Tue Jan 24 13:10:38 2012] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
[Tue Jan 24 13:10:38 2012] [error] SSL Library Error: 218734605 error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib
Кто-нибудь знает, в чем проблема?
Вам необходимо преобразовать закрытый ключ из формата хранилища ключей Java в формат PEM, используемый OpenSSL. С версией keytool из JDK> = 1.6 вы можете сделать это, сначала преобразовав хранилище ключей в формат PKCS # 12, а затем извлекая только закрытый ключ:
keytool -importkeystore -srckeystore generated.keystore -destkeystore generated.p12 -deststoretype PKCS12
openssl pkcs12 -in generated.p12 -out generated.pem -nocerts
Это запишет файл закрытого ключа в created.pem; затем укажите этот файл в конфигурации Apache:
SSLCertificateKeyFile /etc/pki/tls/private/generated.pem
Поскольку файл закрытого ключа по умолчанию зашифрован паролем, каждый раз, когда вы запускаете Apache, вам нужно будет вводить этот пароль. Вы можете использовать SSLPassPhraseDialog
чтобы ввести пароль автоматически, или просто добавьте -nodes
вариант для openssl pkcs12
команда для создания незашифрованного файла закрытого ключа.
Вам нужно указать SSLCertificateKeyFile
к закрытому ключу, а не к хранилищу ключей.
Установить Apache mod ssl
# yum install mod_ssl
Перейти в папку сертификатов в centos 6
# cd /etc/ssl/certs/
Восстановите закрытый ключ и CSR с помощью следующей команды OpenSSL
# openssl req -nodes -newkey rsa:2048 -keyout namhuy_net.key -out namhuy_net.csr
Получите корневой сертификат CA от Verisign, Thawte, Globalsign, Comodo. После того, как вы приобретете сертификат у этого поставщика, вы получите электронное письмо с файлами сертификата. Загрузите эти файлы в
/etc/ssl/certs/
Сохраните объединенный файл как namhuy_net.pem. Теперь файл .pem готов к использованию.
В файле конфигурации SSL для Apache я поместил конфигурации для своего сервера.
# nano /etc/httpd/conf.d/ssl.conf
Редактировать строки
SSLEngine on
SSLCertificateFile /etc/ssl/certs/namhuy_net.crt
SSLCertificateKeyFile /etc/ssl/certs/namhuy_net.key
SSLCertificateChainFile /etc/ssl/certs/namhuy_net.pem
Перезапустить службу httpd
# service httpd restart
Источник: http://namhuy.net/760/how-to-install-an-ssl-certificate-on-centos-for-apache.html