我完成了这个教程http://www.vanemery.com/Linux/Apache/apache-SSL.html在 Apache2 上设置 SSL。但是当我尝试启动服务器时,出现此错误:
/etc/apache2/conf.d/ssl.crt/foo-server.crt 第 1 行语法错误:无效命令“-----BEGIN”,可能是拼写错误或由服务器配置中未包含的模块定义
我的 Apache 设置中似乎缺少什么?我该如何检查?
非常感谢您的帮助!
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
以下是我的 vhost 文件:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName foo.ca
ServerAlias www.foo.ca
RailsEnv development
DocumentRoot /home/dan/rails/foo/public
SSLEngine On
SSLCipherSuite HIGH:MEDIUM
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/conf.d/ssl.crt/foo-server.crt
SSLCertificateKeyFile /etc/apache2/conf.d/ssl.key/foo-server.key
SSLCertificateChainFile /etc/apache2/conf.d/ssl.crt/foo-ca.crt
SSLCertificateFile /etc/apache2/conf.d/ssl.crt/foo-ca.crt
<Directory "/home/dan/rails/foo/public">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
</IfModule>
答案1
检查您的包含指令。看来 httpd 正试图将您的证书文件当作配置文件来运行。因此,证书文件开头的“---begin RSA key”被当作(无效)命令来处理。在您的主 httpd.conf 文件中,我敢打赌您的包含内容是这样的:Include conf.d/ssl.crt/*
但它应该更像这样:Include conf.d/ssl.crt/*.conf
或者Include conf.d/*.conf
Include 用于提取其他 httpd 模块的所有附加配置文件。其中一个是 ssl.conf。但是,您不希望将这些键视为配置文件,否则您将收到所看到的错误。