如何仅使用.crt文件在Apache上配置SSL

如何仅使用.crt文件在Apache上配置SSL,apache,ssl,https,Apache,Ssl,Https,我不熟悉Apache RSR上的SSL配置 但是今天,一个客户要求我配置一台Azure机器(基于Ubuntu 18.04)用于一些网站 一切都很好。。。我已经安装了Apache、PHP、Mysql、phpMyAdmin等。但是,在完成这项工作之前,他让我为一个域和该服务器上托管的所有子域安装一个通配符SSL证书。他给我发了一个.CRT文件和电子邮件正文中的Base64 我尝试使用Base64作为.KEY文件,将.CRT文件转换为.PEM(使用openssl)并设置Apache VirtualHo

我不熟悉Apache RSR上的SSL配置

但是今天,一个客户要求我配置一台Azure机器(基于Ubuntu 18.04)用于一些网站

一切都很好。。。我已经安装了Apache、PHP、Mysql、phpMyAdmin等。但是,在完成这项工作之前,他让我为一个域和该服务器上托管的所有子域安装一个通配符SSL证书。他给我发了一个.CRT文件和电子邮件正文中的Base64

我尝试使用Base64作为.KEY文件,将.CRT文件转换为.PEM(使用openssl)并设置Apache VirtualHosts(端口443,显而易见),如下所示:

SSLEngine on
SSLCertificateFile /home/website/ssl/wildcard_cert.pem
SSLCertificateKeyFile /home/website/ssl/wildcard_cert.key
SSLCertificateChainFile /home/website/ssl/wildcard_cert.crt
[ssl:error] [pid 30401] AH02579: Init: Private key not found
[ssl:error] [pid 30401] SSL Library Error: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag
[ssl:error] [pid 30401] SSL Library Error: error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error
[ssl:error] [pid 30401] SSL Library Error: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag
[ssl:error] [pid 30401] SSL Library Error: error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error (Type=RSAPrivateKey)
[ssl:error] [pid 30401] SSL Library Error: error:04093004:rsa routines:old_rsa_priv_decode:RSA lib
[ssl:error] [pid 30401] SSL Library Error: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag
[ssl:error] [pid 30401] SSL Library Error: error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error (Type=PKCS8_PRIV_KEY_INFO)
[ssl:emerg] [pid 30401] AH02564: Failed to configure encrypted (?) private key [mydomain.com]:443:0, check /home/website/ssl/wildcard_cert.key
apache2ctl configtest
返回成功,但在尝试重新启动服务时,Apache无法启动。检查日志时,私钥出现错误,如下所示:

SSLEngine on
SSLCertificateFile /home/website/ssl/wildcard_cert.pem
SSLCertificateKeyFile /home/website/ssl/wildcard_cert.key
SSLCertificateChainFile /home/website/ssl/wildcard_cert.crt
[ssl:error] [pid 30401] AH02579: Init: Private key not found
[ssl:error] [pid 30401] SSL Library Error: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag
[ssl:error] [pid 30401] SSL Library Error: error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error
[ssl:error] [pid 30401] SSL Library Error: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag
[ssl:error] [pid 30401] SSL Library Error: error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error (Type=RSAPrivateKey)
[ssl:error] [pid 30401] SSL Library Error: error:04093004:rsa routines:old_rsa_priv_decode:RSA lib
[ssl:error] [pid 30401] SSL Library Error: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag
[ssl:error] [pid 30401] SSL Library Error: error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error (Type=PKCS8_PRIV_KEY_INFO)
[ssl:emerg] [pid 30401] AH02564: Failed to configure encrypted (?) private key [mydomain.com]:443:0, check /home/website/ssl/wildcard_cert.key
在对conf文件中与SSL相关的行进行注释时,Apache运行良好,但仅使用HTTP

有人能帮我吗


谢谢!:)

由于您有.key和.crt文件,所以只需编辑默认的-ssl.conf文件,然后将“SSLCertificateFile”的路径更新到存储.crt文件的位置,并将“SSLCertificateKeyFile”的路径更新到包含.key文件的位置,启用mod_ssl、Apache ssl模块和mod_头“sudo a2enmod ssl sudo a2enmod headers”,也请确保您的端口443已启用,然后重新启动Apache服务器,尝试所有这些,并让我知道输出设置是否正确。您所说的都是正确的,但是,阅读我的问题,您将知道我的.key文件无效,因此我询问是否有其他方法获取.key文件(可能来自.crt)或者在不使用.key文件的情况下启用ssl(我认为这是不可能的,但不需要询问)…根据您的说明,我错过了仅启用mod_头,但即使启用它,仍然无法工作,因为.key文件是错误的。您的.key文件可能错误的原因之一是如果您没有生成证书签名请求(CSR)在您使用密钥的Apache服务器上,如果您的客户端没有要求您从Azure机器(基于Ubuntu 18.04)生成CSR,则该密钥将无效。您可以使用此命令生成CSR文件“openssl req-new-newkey rsa:2048-nodes-keyout server.key-out server.CSR”“但是,将服务器替换为您试图保护的域的名称,然后向他发送.csr,他将使用该文件为您生成新的证书和密钥文件。无法从证书中提取密钥。”。证书是一种公共文件;您只需访问网站即可获得任何网站的证书。密钥是私有的,如果有人可以获取您的密钥,他们也可以模拟您。如果您能够从证书(公共文档)中提取密钥(秘密),那么就没有意义了。