如何在VPS上使用免费签名的SSL证书设置Apache

我们的重点是在VPS上安装免费签名的SSL证书。

注意:您可能要考虑使用让我们的加密,而不是下面的StartSSL.com过程。 让我们的加密是一个新的证书颁发机构,它提供创建在大多数Web浏览器信任的SSL / TLS证书的自由简单的方法。 退房的教程开始: 如何在Ubuntu 14.04与咱们加密安全Apache

先决条件

在开始之前,以下是本教程需要的网络工具:

  1. 谷歌的Chrome浏览器
  2. Apache安装在您的VPS(云服务器)
  3. 您拥有的域名
  4. 访问该域的电子邮件地址,可以:
    1. postmaster@duable.co
    2. hostmaster@duable.co
    3. webmaster@duable.co

StartSSL.com提供完全免费的验证 (用户将不必看那些可怕的红色屏幕说:“这个网站是不信任”了),您可以在网站上使用SSL证书。 这是一个很大的,因为大多数公司收取$ 50- $ 60类似的服务。 免费版本有点棘手的设置,但它是非常值得的。

上手,浏览到StartSSL.com并使用左侧的工具栏中,导航到startssl如果产品再到startssl如果™免费。 选择的链接控制面板从页面的顶部。

确保您使用的是Google Chrome浏览器

  1. 选择快速注册。选项
  2. 输入您的个人信息,然后单击继续。
  3. 您很快就会收到一封内含验证码的电子邮件。 将该电子邮件复制并粘贴到StartSSL页面上的表单中。
  4. 他们将审核您的证书请求,然后向您发送包含新信息的电子邮件。 这个过程可能需要长达6个小时,所以耐心。
  5. 电子邮件到达后,使用提供的链接和新的身份验证代码(在电子邮件底部)继续下一步。
  6. 他们会要求您生成一个私钥,您将获得“高”或“中”等级的选择。 继续选择“高”。
  7. 密钥准备就绪后,单击安装。
  8. Chrome会显示弹出式窗口,表示证书已成功安装到Chrome。

这意味着您的浏览器现在使用新证书进行身份验证,您可以使用新证书登录StartSSL身份验证区域。 现在,我们需要获得一个格式正确的证书,以便在您的VPS上使用。 点击上的控制面板再次链接,并选择身份验证选项。 Chrome会显示一个弹出窗口,询问您是否要进行身份验证,并显示刚刚安装的证书。 继续使用该证书进行身份验证,以进入控制面板。

您需要验证您的域名,以证明您拥有您正在设置证书的域名。 点击切换到验证向导在控制面板和类型设置为域名验证。 系统会提示您选择您网域中的电子邮件,例如postmaster@yourdomain.com。

StartSSL

检查电子邮件收件箱中您选择的电子邮件地址。 您将在该地址收到另一封验证电子邮件,与之前一样,将验证码复制并粘贴到StartSSL网站。

接下来,转到“证书向导”选项卡,选择创建Web服务器SSL / TLS证书。

启动SSL

点击继续,然后输入一个安全的密码,保留其他设置。

您将看到一个包含您的私钥的文本框。 将内容复制并粘贴到文本编辑器中,并将数据保存到名为ssl.key的文件中。

私钥

当您单击继续时,系统将询问您要为以下哪个域创建证书:

选择域

选择您的域并继续下一步。

将询问您要为其创建证书的子域。 在大多数情况下,您希望在此处选择www,但如果您要使用具有SSL的其他子域名,请在此输入:

添加子域

StartSSL将在文本框中为您提供新证书,与私钥一样:

保存证书

再次,复制并粘贴到文本编辑器,这一次将其保存为ssl.crt。

您还需要StartCom Root CA和StartSSL的第1类中间服务器CA为了验证您的网站,所以最后一步,转到工具箱窗格并选择StartCom CA证书:

Startcome CA证书

在此屏幕上,右键单击并另存为两个文件:

  • StartCom根CA(PEM编码)(保存到ca.pem)
  • 类1中间服务器CA(保存到sub.class1.server.ca.pem)

出于安全原因,StartSSL加密您的私钥(ssl.key文件),但是您的Web服务器需要其未加密的版本来处理您的网站的加密。 要解密它,将其复制到您的服务器上,并使用以下命令将其解密为private.key文件:

openssl rsa -in ssl.key -out private.key

OpenSSL将要求您输入密码,因此请输入您在StartSSL网站上输入的密码。

此时你应该有五个文件。 如果您缺少任何内容,请仔细检查之前的步骤,然后重新下载:

  • ca.pem - StartSSL的根证书
  • private.key - 您的私钥的未加密版本(非常小心,没有其他人可以访问此文件!)
  • sub.class1.server.ca.pem - StartSSL的中间证书
  • ssl.key - 您的私钥的加密版本(不需要复制到服务器)
  • ssl.crt - 您的新证书

您可以丢弃ssl.key文件。 如果您尚未将其他人复制到您的服务器上,请立即上传它们:

scp {ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} YOURSERVER:~ 

在Apache中激活证书

有证书不是任何好,如果你不能实际使用它。 本节说明如何配置Apache以使用您的新SSL证书。 这些说明适用于在最新版本的Ubuntu VPS上运行的Apache。 对于其他基于Linux的发行版或Web服务器,您必须相应地进行调整。

首先,创建我们将存储密钥的文件夹。 启用Apache的SSL模块,并重新启动Apache。

sudo a2enmod ssl
sudo service apache2 restart
sudo mkdir -p /etc/apache2/ssl

将您在上一节中设置的文件复制到VPS上的/ etc / apache2 / ssl文件夹中。

sudo mkdir -p /etc/apache2/ssl
cp ~/{ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} /etc/apache2/ssl

执行:

ls /etc/apache2/ssl

它应该返回:

ca.pem
ssl.crt
private.key
sub.class1.server.ca.pem

现在,打开您的apache2配置文件。 除非您已经修改了默认配置,输入:

nano /etc/apache2/sites-enabled/000-default

它应该看起来像这样:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

复制上面的整个脚本(从<VirtualHost *:80>到</ VirtualHost>),将其粘贴到现有脚本下面,然后将顶行从:

<VirtualHost *:80>

<VirtualHost *:443>

并在<VirtualHost *:443>行后面添加以下行:

SSLEngine on                                                                
SSLProtocol all -SSLv2                                                      
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM                

SSLCertificateFile /etc/apache2/ssl/ssl.crt                           
SSLCertificateKeyFile /etc/apache2/ssl/private.key                        
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem 

最终结果应如下所示:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

<VirtualHost *:443>
    SSLEngine on                                                                
    SSLProtocol all -SSLv2                                                      
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM                

    SSLCertificateFile /etc/apache2/ssl/ssl.crt                           
    SSLCertificateKeyFile /etc/apache2/ssl/private.key                        
    SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem 
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

保存文件并使用以下命令重新启动Apache:

sudo service apache2 restart

您可以检查Apache的日志文件,以查看是否有此命令的任何显示停止错误:

cat /var/log/apache2/error.log

如果一切正常,尝试使用HTTPS URL访问你的网站在你的网页浏览器(例如HTTPS://www.YOURSITE.com)。 当您的网站加载时,您应该在网址旁边看到一个绿色的挂锁图标。 点击它,你应该看到以下内容。 连接选项卡应显示该站点的身份已由StartCom验证。

恭喜! 你都设置了!

参考链接:

这里有一些其他职位我咨询时,把这一起。 如果你遇到任何问题,他们可能是一个灵感来源如何解决他们:

提交者:Nik van der Ploeg