如何在VPS上使用免费签名SSL证书设置Apache
注意: 您可能需要考虑使用 Let's Encrypt 而不是下面的 StartSSL.com 进程。 Let's Encrypt 是一个新的证书颁发机构,它提供了一种 free 和 easy 方式来创建大多数 Web 浏览器都信任的 SSL/TLS 证书。 查看教程以开始使用:如何在 Ubuntu 14.04
上使用 Let's Encrypt 保护 Apache
先决条件
在开始之前,以下是本教程所需的 Web 工具:
<ol> <li><a href="https://www.google.com/intl/en/chrome/browser">Google Chrome</a> browser</li> <li>Apache installed on your VPS (cloud server)</li> <li>A domain name you own</li> <li>Access to an email address at that domain, either: <ol> <li>postmaster@duable.co</li> <li>hostmaster@duable.co</li> <li>webmaster@duable.co</li> </ol> </li> </ol>
StartSSL.com 提供完全免费的 验证 (您的用户将 ' 不必看到那些可怕的红色屏幕说“这个网站 ' 不再受信任”)SSL 证书您可以在您的网站上使用。 这很划算,因为大多数公司对类似服务收取 50 至 60 美元的费用。 免费版本设置起来有点棘手,但非常值得。
要开始使用,请浏览至 StartSSL.com 并使用左侧的工具栏,导航至 StartSSL Products,然后导航至 StartSSL™ Free。 从页面顶部选择控制面板的链接。
确保您使用的是谷歌浏览器
<ol> <li>Choose the <strong>Express Signup.</strong> option</li> <li>Enter your personal information, and click continue.</li> <li>You'll get an email with a verification code inside it shortly. Copy and paste that email into the form on StartSSL's page.</li> <li>They will review your request for a certificate and then send you an email with the new info. This process might take as long as 6 hours though, so be patient.</li> <li>Once the email comes, use the link provided and the new authentication code (at the bottom of the email) to continue to the next step.</li> <li>They will ask you to Generate a private key and you will be provided with the choice of "High" or "Medium" grade. Go ahead and choose "High".</li> <li>Once your key is ready, click Install.</li> <li>Chrome will show a popdown that says that the certificate has been succesfully installed to Chrome.</li> </ol> <p>This means your browser is now authenticated with your new certificate and you can log into the StartSSL authentication areas using your new certificate. Now, we need to get a properly formatted certificate set up for use on your VPS. Click on the <a href="https://www.startssl.com/?app=12">Control panel</a> link again, and choose the Authenticate option. Chrome will show a popup asking if you want to authenticate and will show the certificate you just installed. Go ahead and authenticate with that certificate to enter the control panel.</p> <p>You will need to validate your domain name to prove that you own the domain you are setting up a certificate for. Click over to the Validations Wizard in the <a href="https://www.startssl.com/?app=12">Control panel</a> and set Type to Domain Name Validation. You'll be prompted to choose from an email at your domain, something like postmaster@yourdomain.com.</p>
检查您选择的电子邮件地址的电子邮件收件箱。 您将在该地址收到另一封验证电子邮件,因此像以前一样,将验证码复制并粘贴到 StartSSL 网站。
接下来,转到证书向导选项卡并选择创建 Web 服务器 SSL/TLS 证书。
点击继续,然后输入安全密码,其他设置保持不变。
您将看到一个包含您的私钥的文本框。 将内容复制并粘贴到文本编辑器中,并将数据保存到名为 ssl.key 的文件中。
单击继续时,系统会询问您要为哪个域创建证书:
选择您的域并继续下一步。
系统将询问您要为其创建证书的子域。 在大多数情况下,您想在此处选择 www,但如果您想通过 SSL 使用不同的子域,请在此处输入:
StartSSL 将在文本框中为您提供新证书,就像它为私钥所做的那样:
再次,复制并粘贴到文本编辑器中,这次将其保存为 ssl.crt。
您还需要 StartCom 根 CA 和 StartSSL 的 1 类中间服务器 CA 来验证您的网站,因此在最后一步,转到工具箱窗格并选择 StartCom CA 证书:
在此屏幕上,右键单击并另存为两个文件:
<ul> <li>StartCom Root CA (PEM Encoded) (save to ca.pem)</li> <li>Class 1 Intermediate Server CA (save to sub.class1.server.ca.pem)</li> </ul>
出于安全原因,StartSSL 会加密您的私钥(ssl.key 文件),但您的 Web 服务器需要它的未加密版本来处理您网站的加密。 要解密它,请将其复制到您的服务器上,然后使用以下命令将其解密为文件 private.key:
openssl rsa -in ssl.key -out private.key
OpenSSL 会询问您的密码,因此请输入您在 StartSSL 网站上输入的密码。
此时您应该有五个文件。 如果您缺少任何内容,请仔细检查前面的步骤并重新下载它们:
<ul> <li>ca.pem - StartSSL's Root certificate</li> <li>private.key - The unencrypted version of your private key (be very careful no one else has access to this file!)</li> <li>sub.class1.server.ca.pem - The intermediate certificate for StartSSL</li> <li>ssl.key - The encrypted version of your private key (does not need to be copied to server)</li> <li>ssl.crt - Your new certificate</li> </ul>
您可以丢弃 ssl.key 文件。 如果您还没有将其他人复制到您的服务器上,您现在将它们上传到那里:
scp {ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} YOURSERVER:~
<h2>Activating the certificate in Apache</h2>
如果您不能实际使用它,那么拥有证书就没有任何好处。 本节说明如何配置 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 *: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)。 当您的网站加载时,您应该会在 URL 旁边看到一个绿色的小挂锁图标。 单击它,您应该会看到以下内容。 连接选项卡应显示该站点的身份已由 StartCom 验证。
恭喜! 你都准备好了!
<p>Reference Links:</p>
这是我在整理时参考的其他一些帖子。 如果您遇到任何问题,它们可能会成为解决问题的灵感来源:
<ul> <li><a href="http://www.debian-administration.org/articles/349">Apache SSL Configuration</a></li> <li><a href="http://jasoncodes.com/posts/startssl-free-ssl">StartSSL Apache Guides</a></li> </ul>