我有一个 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-----
ssl.conf 文件中的 Apache 配置:
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
有人知道这是什么问题吗?
答案1
您需要将私钥从 Java 密钥库格式转换为 OpenSSL 使用的 PEM 格式。使用 JDK >= 1.6 的 keytool 版本,您可以先将密钥库转换为 PKCS#12 格式,然后仅提取私钥:
keytool -importkeystore -srckeystore generated.keystore -destkeystore generated.p12 -deststoretype PKCS12
openssl pkcs12 -in generated.p12 -out generated.pem -nocerts
这会将私钥文件写入generated.pem;然后在 Apache 配置中指定此文件:
SSLCertificateKeyFile /etc/pki/tls/private/generated.pem
由于私钥文件默认使用密码加密,因此每次启动 Apache 时都需要输入此密码。您可以使用 自动SSLPassPhraseDialog
提供密码,也可以将-nodes
选项添加到openssl pkcs12
命令中以生成未加密的私钥文件。
答案2
您需要指向SSLCertificateKeyFile
私钥,而不是密钥库。
答案3
安装 Apache mod ssl
# yum install mod_ssl
进入 centos 6 中的 certs 文件夹
# cd /etc/ssl/certs/
使用以下 OpenSSL 命令重新生成私钥和 CSR
# openssl req -nodes -newkey rsa:2048 -keyout namhuy_net.key -out namhuy_net.csr
从 Verisign、Thawte、Globalsign、Comodo 获取 CA 根证书。从这些供应商处购买证书后,您将收到一封包含证书文件的电子邮件。将这些文件上传到
/etc/ssl/certs/
将合并的文件保存为 namhuy_net.pem。.pem 文件现在即可使用。
我最终将服务器的配置放在了 Apache 的 SSL 配置文件中。
# 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