Apache mod24#u ssl赢得';无法读取针对openssl进行验证的证书

Apache mod24#u ssl赢得';无法读取针对openssl进行验证的证书,apache,ssl,amazon-ec2,Apache,Ssl,Amazon Ec2,因此,我在尝试在EC2服务器上启动apache时遇到问题 规格: OS: Amazon Linux AMI r2016.03 httpd24.x86_ 64 2.4.18-1.64.amzn1 mod24_ssl.x86_64 2.4.18-1.64.amzn1 Apache配置: <VirtualHost *:443> DocumentRoot /var/www/zxurian.com/html/ ServerAdmin

因此,我在尝试在EC2服务器上启动apache时遇到问题

规格:

OS: Amazon Linux AMI r2016.03
httpd24.x86_  64 2.4.18-1.64.amzn1
mod24_ssl.x86_64 2.4.18-1.64.amzn1
Apache配置:

<VirtualHost *:443>
    DocumentRoot            /var/www/zxurian.com/html/
    ServerAdmin             root@localhost.com
    ServerName              zxurian.com

    DirectoryIndex          index.php

    SSLEngine               on
    SSLProtocol             all -SSLv2 -SSLv3 -TLSv1
    SSLCipherSuite          "AES256+EECDH:AES256+EDH"
    SSLHonorCipherOrder     on
    SSLCertificateFile      /etc/httpd/ssl/certificate.crt
    SSLCertificateChainFile /etc/httpd/ssl/certificate.cc-bundle
    SSLCertificateKeyFile   /etc/httpd/ssl/certificate.key

    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always append X-Frame-Options SAMEORIGIN

    <Directory "/var/www/zxurian.com">
            Require all granted
            AllowOverride All
    </Directory>
    <FilesMatch "^\.">
            Order Allow,Deny
            Deny from All
    </FilesMatch>
    <DirectoryMatch "^\.|\/\.">
            Order Deny,Allow
            Deny from All
    </DirectoryMatch>
</VirtualHost>
在这一点上,我没有主意了。我已验证该文件没有额外的行尾<文件上的code>vi-b不显示文件中的额外信息(即,没有
^M
或windows行结尾)。它的设置与我的其他运行良好的EC2服务器相同

还有什么我可以查的吗

按请求添加:

[zxurian@ip-10-0-200-22 ssl]$ egrep 'BEGIN|END' certificate.crt
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
[zxurian@ip-10-0-200-22 ssl]$ egrep 'BEGIN|END' certificate.key
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

第一条线索:你不能再仅仅依赖你的
VirtualHost
定义了。您必须引用conf.d/ssl.conf中的有效证书/密钥对,如下所示(位置适用于我的Fedora系统):

SSLCertificateFile/etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile/etc/pki/tls/private/localhost.pem


Mine是自签名证书,由httpd-2.2/openssl-1.0.2h继承。证书采用ascii PEM格式。密钥已转换为RSA clear副本,因此启动httpd时不需要密码。(在这样做之前,请仔细评估您的环境)。证书是为什么制作的似乎无关紧要,因为它仍然是在VirtualHost部分中定义的证书,将呈现给客户端。对我来说,这些证书(从httpd-2.2继承过来)是PEM的缩写形式,而相应的密钥也是RSA的清晰副本形式。当然,您必须加载mod_ssl.so,但是如果您在httpd-2.2中有工作,那么您已经这样做了。作为记录:我的系统中没有dhparams.pem文件(在我的案例中只是另一个虚假线索)。

这可能不是什么安慰,但我怀疑错误消息是关于真正问题的谎言。您可以编辑帖子,将egrep'BEGIN | END'/etc/httpd/ssl/certificate.crt的输出包括在内,并对其他文件进行同样的操作,以进行健全性检查。添加到原始帖子中,如果我将您发送到黑洞中,请提前道歉,因为我尽可能避免使用apache。。。但是私钥不应该说
----开始RSA私钥---
?转换它:
openssl rsa-in-certificate,key-out-certificate.rsakey
然后更改您的配置以使用新创建的文件。我在另一台EC2服务器(相同的Amazon Linux/Apache/mod24_ssl设置)上的密钥文件也有
---BEGIN PRIVATE key-----
,但为了论证起见,我尝试将密钥转换为rsa,在apache配置中切换了密钥文件,仍然是相同的错误。
[zxurian@ip-10-0-200-22 ssl]$ egrep 'BEGIN|END' certificate.crt
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
[zxurian@ip-10-0-200-22 ssl]$ egrep 'BEGIN|END' certificate.key
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----