如何在GCE上安装SSL

我使用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结尾的证书:

  1. CACertificate-1.cer
  2. CACertificate-2.cer
  3. ServerCertificate-1.cer

我将所有这些证书上传到/ etc / apache2 /文件夹

/ etc / apache2 /包含:

  • CACertificate-1.cer
  • CACertificate-2.cer
  • ServerCertificate-1.cer
  • Privatekey.key
  • Csrkey.csr
  • Chain.ctr( 我从Rapid SSL获得这个作为中间证书 )

然后我必须将代码添加到/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协议的步骤(您可以安全地跳过已经采取的步骤):

  1. 创建一个安全的目录来安装和保护您的密钥

$ sudo mkdir /etc/apache2/ssl.crt
$ cd /etc/apache2/ssl.crt

  1. 生成一个私钥

$ sudo openssl genrsa -out example.key 2048

  1. 生成证书签名请求(CSR)

$ sudo openssl req -new -key example.key -out example.csr

  1. 您可以使用新的CSR从证书颁发机构(CA)获取有效的证书。 或者,您可以通过运行以下命令来生成自签名证书

$ sudo openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt

警告:自签名证书不适合公共场所。 当自签名证书实现完全加密时,当访问者尝试访问您的网站时,会导致大多数浏览器发出警告或错误。 以上命令仅用于测试目的。

  1. 打开Apache的SSL站点配置文件进行编辑

$ sudo nano /etc/apache2/sites-available/default-ssl.conf

  1. 编辑以下指令的值

SSLCertificateFile /etc/apache2/ssl.crt/example.crt

SSLCertificateKeyFile /etc/apache2/ssl.crt/example.key

  1. 取消注释并编辑SSLCertificateChainFile值,如果您从CA获得证书链文件

SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt

  1. 保存配置文件并关闭它。

  2. 现在启用这个网站配置文件

$ sudo a2ensite default-ssl.conf

  1. 您可以使用下面的命令来验证并查看配置错误

$ sudo apachectl configtest

  1. 重新启动Apache服务

$ sudo service apache2 restart

  1. 为您的VM实例添加/启用以下协议的GCE防火墙规则:端口对

tcp:80 and tcp:443