Let’s Encrypt怎么申请?让我们加密SSL免费证书原理&安装教程

Let’s Encrypt怎么申请?

让我们加密SSL证书原理&安装教程

SSL是什么?陈沩亮在上一篇文章《http vs https 区别是什么?SSL加密过程详解》里就有说到。

除了电子商务网站必须购买高级的加密SSL证书以外,用网站做微信公众号推广的新媒体人,想要安装SSL证书,其实可以免费安装加密SSL证书,这样对SEO有帮助,能提高网站关键词在搜索引擎的排名。

Let’s Encrypt(让我们加密)本身自己也写了一套流程(https://certbot.eff.org/),使用Linux的朋友,可以参考该流程的同时,跟着本教程操作。

先下载 certbot-auto 工具,然后运行工具的安装依赖组件。

wget https://dl.eff.org/certbot-auto --no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n

生成SSL证书

接下来,以陈沩亮博客域名为例,请根据自身需要修改,SSH运行如下命令。

请务必修改命令中的:

  1. 邮箱
  2. 服务器路径
  3. 网站域名

单域名单目录,生成一个证书:

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/admin/web/chenweiliang.com/public_html -d www.chenweiliang.com

多域名单目录,生成一个证书:(即多个​​域名,单个目录,使用同一个证书)

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/admin/web/chenweiliang.com/public_html -d www.chenweiliang.com -d img.chenweiliang.com

生成的SSL证书会保存在:/etc/letsencrypt/live/www.chenweiliang.com/ 目录下。


多域名多目录,生成一个证书:(即多个域名,多个目录,使用同一个证书)

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/admin/web/chenweiliang.com/public_html -d www.chenweiliang.com -d img.chenweiliang.com -w /home/eloha/public_html/site/etufo.org -d www.etufo.org -d img.etufo.org

安装 Let’s Encrypt 证书成功后,SSH会出现如下提示信息:

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/www.chenweiliang.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/www.chenweiliang.com/privkey.pem
Your cert will expire on 2018-02-26. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
“certbot-auto renew”
– If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

SSL证书续期

证书续期也非常方便,利用crontab进行自动续期。有些Debian没有安装crontab的可以先手动安装。

apt-get install cron

以下命令分别nginx跟apache是在 /etc/crontab 的文件中输入的命令,意思是每10天续期一次,90天的有效期足够了。

Nginx的 crontab 文件,请添加:

0 3 */10 * * /root/certbot-auto renew --renew-hook "/etc/init.d/nginx reload"

Apache 的 crontab 文件,请添加:

0 3 */10 * * /root/certbot-auto renew --renew-hook "service httpd restart"

SSL证书Apache配置

现在,我们需要对 Apache 的配置进行修改。

温馨提示:

编辑 httpd.conf 文件 ▼

/usr/local/apache/conf/httpd.conf

查找 ▼

Listen 443

或添加监听端口443 ▼

Listen 443

SSH检查Apache监听端口 ▼

grep ^Listen /usr/local/apache/conf/httpd.conf

查找 ▼

mod_ssl

或添加▼

LoadModule ssl_module modules/mod_ssl.so

查找 ▼

httpd-ssl

然后,SSH执行以下命令(注意将路径换你自己的):

at >/usr/local/apache/conf/extra/httpd-ssl.conf<<EOF
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProxyCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3
SSLProxyProtocol all -SSLv2 -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLMutex "file:/usr/local/apache/logs/ssl_mutex"
EOF

接着,在你创建的网站的Apache配置的最后</VirtualHost>下面。

添加上SSL部分的配置文件(注意去掉注释,还有将路径换你自己的):

<VirtualHost *:443>
DocumentRoot /home/admin/web/chenweiliang.com/public_html //网站目录
ServerName www.chenweiliang.com:443 //域名
ServerAdmin [email protected] //邮箱
ErrorLog "/var/log/www.chenweiliang.com-error_log" //错误日志
CustomLog "/var/log/www.chenweiliang.com-access_log" common //访问日志
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.chenweiliang.com/fullchain.pem //之前生成的证书
SSLCertificateKeyFile /etc/letsencrypt/live/www.chenweiliang.com/privkey.pem //之前生成的密钥
<Directory "/home/admin/web/chenweiliang.com/public_html"> //网站目录
SetOutputFilter DEFLATE
Options FollowSymLinks
AllowOverride All
suPHP_UserGroup eloha eloha //用户组(有些服务器配置需要,有些可能不需要,出错请删除此行)
Order allow,deny
Allow from all
DirectoryIndex index.html index.phps
</Directory>
</VirtualHost>

最后重启Apache就可以了:

service httpd restart

Apache强制HTTP重定向HTTPS

添加重定向规则

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

如果你只想指定某个URL重定向到HTTPS:

RewriteEngine On
RewriteRule ^message$ https://www.etufo.org/message [R=301,L]

重启Apache,让.htaccess文件生效:

service httpd restart

注意事项

重定向规则位置问题

在伪静态规则下,放置重定向跳转规则时,通常会遇到 http 无法全站重定向到 https 的问题。

最初我们将重定向代码复制到.htaccess中,它将出现在以下情况 ▼

访问http主页时,我们希望触发网址重定向,跳过伪静态规则以执行重定向跳转规则,以便可以实现全站 http 重定向到 https

不要将https重定向规则放在 [L] 规则的下面,要放在 [L] 规则上面 ▼

扩展阅读:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注