我使用openssl命令创build了一个私钥文件:
openssl genrsa -des3 -out private.key 2048
input我的密码,然后生成CSR:
openssl req -new -key privatekey.key -out csrkey.csr
我使用这个CSR密钥通过RapidSSL创build我的SSL证书。 他们发给我3个以.cer结尾的证书:
我将所有这些证书上传到/ etc / apache2 /文件夹
/ etc / apache2 /包含:
然后我必须将代码添加到/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
了一下,发现/etc/apache2/sites-available/default-ssl.conf
其中包含<VirtualHost>
我继续添加上面的代码,但重新启动后使用Apache
sudo apachectl restart
但https://example.co.uk给我一个灰色的屏幕:SSL连接错误
ERR_SSL_PROTOCOL_ERROR隐藏详细信息无法与服务器build立安全连接。 这可能是服务器的问题,或者可能需要您没有的客户端身份validation证书。
以下是在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