题 为apache生成自签名SSL证书


我想为网站创建自签名证书。旧证书几天前就过期了。系统上托管了多个NameVirtualHosts。我用来创建证书的命令来自一个教程网站,它是:

openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr 
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

在ssl.conf文件中我已经在VirtualHost部分下指定了以及其他管理员完成的旧设置

SSLEngine on
SSLCertificateFile <full_path>/server.crt
SSLCertificateKeyFile <full_path>/server.key

在启动服务器时,我收到日志文件中的消息,服务器无法启动。

在error_log文件中的消息是

 [Mon Jun 01 23:52:46 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

在ssl_error_log文件中有消息

 [Mon Jun 01 23:52:46 2009] [error] Init: Private key not found
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218710120 error:0D094068:asn1 encoding routines:d2i_ASN1_SET:bad tag
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218734605 error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib

如果有人能解释如何解决这个问题我真的很感激。我已经尝试了一些关于自签名SSL证书的其他教程网站,但他们提到的步骤都没有。


9
2018-06-01 18:50






答案:


使用此一个衬垫生成证书并键入一个文件

openssl req -new -x509 -days 999 -nodes -out apache.pem -keyout apache.pem

然后你需要的唯一配置是

SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem

20
2018-06-01 19:11



你的意思是在sslengine和sslcertificatefile / etc / ssh上添加以上行 - Rajat
这是用于apache配置,而不是ssh。 - hayalci
与OP的原始命令相比,该命令将私钥保留在文件系统中的clear中。省略了 -nodes 选项使用Triple-DES加密密钥。 (当服务器启动时,当然需要提供密钥的密码。)OpenSSL req 命令不支持生成更强加密的密钥,但可以使用以前生成的强加密密钥。 - Calrion
这救了我的命! - Benjamin Allison


这可能看起来有点微不足道,但检查.key文件的权限


4
2018-06-01 19:17



+1有时琐碎的事情是最不重要的。 - Burkhard


您可以使用 openssl req -newkey rsa:1024 -keyout privkey.pem 如果密钥生成不正确,则在生成时保存SSL密钥。


0
2018-06-01 19:51