Ank*_*kit 1 ssl ssl-certificate apache-2.2
我有一个 nic 签名的证书,我试图在我的 apache 服务器中配置它,但没有太多运气:(。要生成这个证书,他们需要我这边的 CSR。我使用以下命令创建了 CSR:
首先使用命令创建密钥库文件 -
keytool -genkey -alias generated -keyalg RSA -keysize 2048 -keystore generated.keystore
Run Code Online (Sandbox Code Playgroud)
使用以下命令从此密钥库生成 CSR:
keytool -certreq -keyalg RSA -alias generated -file generated.csr -keystore generated.keystore
Run Code Online (Sandbox Code Playgroud)
我的 csr 看起来像:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIC7jCCAdYCAQAwgagxCzAJBgNVBAYTAklOMRAwDgYDVQQIEwdNYW5pcHVyMQ8wDQYDVQQHEwZJ
bXBoYWwxNTAzBgNVBAoTLE1hbmlwdXIgU3RhdGUgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBTb2Np
ZXR5MRkwFwYDVQQLDBBTUCBTU0RHICYgZUZvcm1zMSQwIgYDVQQDExt3d3cubWFuaXB1cnBvcnRh
......
......
bC5tbi5nb3YuaW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRVxKwt/xCiAgGfuCs
ud5kcf+BKQURwKExLHUeUNQHpT1IMcx/is9anki+u3ijFbV1ei/ybgSRzFgesem+yTUutTYCgyqd
U7ZxJTuKmHDkZCVEBzGxl+Jl8AQxHHQzBI9PWuCBURR0q1eNeasfO3yWZpkRvK58uXf6vGZakYHZ
-----END NEW CERTIFICATE REQUEST-----
Run Code Online (Sandbox Code Playgroud)
他们为此生成了一个证书 (.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-----
Run Code Online (Sandbox Code Playgroud)
ssl.conf 文件中的 Apache 配置:
SSLCertificateFile /etc/pki/tls/certs/signed.cer
SSLCertificateKeyFile /etc/pki/tls/private/generated.keystore
Run Code Online (Sandbox Code Playgroud)
现在,当我启动我的 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
Run Code Online (Sandbox Code Playgroud)
有谁知道是什么问题?
您需要将私钥从 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
Run Code Online (Sandbox Code Playgroud)
这会将私钥文件写入generated.pem;然后在 Apache 配置中指定这个文件:
SSLCertificateKeyFile /etc/pki/tls/private/generated.pem
Run Code Online (Sandbox Code Playgroud)
因为私钥文件默认是用密码加密的,所以每次启动Apache时都需要输入这个密码。您可以使用SSLPassPhraseDialog
来自动提供密码,也可以将-nodes
选项添加到openssl pkcs12
命令中以生成未加密的私钥文件。
归档时间: |
|
查看次数: |
11949 次 |
最近记录: |