我使用openssl命令创建了一个私钥文件:
openssl genrsa -des3 -out private.key 2048
输入我的密码,然后生成CSR:
openssl req -new -key privatekey.key -out csrkey.csr
我使用此CSR密钥通过RapidSSL创建我的SSL证书。他们发给我3个以.cer结尾的证书,即:
我将所有这些证书上传到/ etc / apache2 /文件夹
/ etc / apache2 / contains:
然后我必须将代码添加到/etc/apache2/apache2.conf:
<VirtualHost _default_:443>
SSLEngine on
DocumentRoot /var/www/html
ServerName example.co.uk
SSLEngine on
SSLCertificateFile /etc/apache2/CACertificate-1.cer
SSLCertificateKeyFile /etc/apache2/privatekey.key
SSLCertificateChainFile /etc/apache2/chain.ctr
</VirtualHost>
我的/etc/apache2/apache2.conf
文件没有<VirtualHost>
,当我尝试重新启动apache时,它说“SSLEngine命令没有在此模块中定义”。所以我浏览了一下,找到了包含/etc/apache2/sites-available/default-ssl.conf
<VirtualHost>
我继续添加上面的代码,但是在使用
重启apache之后sudo apachectl restart
但是https://example.co.uk给了我一个灰色的屏幕:SSL连接错误
ERR_SSL_PROTOCOL_ERROR隐藏详细信息无法建立安全连接 到服务器。这可能是服务器的问题,也可能是 需要您没有的客户端身份验证证书。
答案 0 :(得分:3)
以下是在Google Compute Engine上启用Apache服务的HTTPS协议的步骤(您可以安全地跳过已经采取的步骤):
$ sudo mkdir /etc/apache2/ssl.crt
$ cd /etc/apache2/ssl.crt
$ sudo openssl genrsa -out example.key 2048
$ sudo openssl req -new -key example.key -out example.csr
$ sudo openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt
警告:自签名证书不适用于公共站点。 虽然自签名证书实现了完全加密,但它会实现 导致大多数浏览器在访问者尝试时出现警告或错误 访问您的网站。上述命令用于测试目的 仅
$ sudo nano /etc/apache2/sites-available/default-ssl.conf
SSLCertificateFile /etc/apache2/ssl.crt/example.crt
SSLCertificateKeyFile /etc/apache2/ssl.crt/example.key
SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
保存配置文件并关闭它。
现在启用此站点配置文件
$ sudo a2ensite default-ssl.conf
$ sudo apachectl configtest
$ sudo service apache2 restart
tcp:80 and tcp:443