centos7使用Let's Encrypt免费使用全站https

Let’s Encrypt 是一个免费及开放的提供凭证的机构(CA), 以下是在RHEL 及CentOS 7 将Let’s encrypt 方法。

第一步,安装epel源并且执行更新

1
yum install epel-release&&yum update

第二步,安装letsencrypt(certbot)

1
yum install letsencrypt

第三步,使用certonly生成证书,会出现以下界面

1
letsencrypt certonly

letsencrypt
这是选择第二个选项,光标切换到OK标签,按回车继续,会出现下图界面,输入您的所有网站URL,点击回车,最多单个证书支持100个

特别注意:这是必须关闭您的apache,nginx等web服务器,否则会失败,而且您的这些网站必须是DNS解析到这台服务器上的才能申请,申请之后您可以放在别的服务器上,这都是没有问题的。


光标在OK上摁回车进入下一步,这是如果您注意到了注意事项,会出现如下信息提示:

1
- Congratulations! Your certificate and chain have been saved at/etc/letsencrypt/live/kxstu.com/fullchain.pem. Your cert will expire on 2017-01-12. To obtain a new version of the certificate in  the future, simply run Let's Encrypt again.

这说明您已经申请成功!
接下来说一下服务器怎么配置证书

nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
server {
listen 443 ssl;
server_name kxstu.com;
ssl_certificate /etc/letsencrypt/live/kxstu.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kxstu.com/privkey.pem;
root /var/www/html/blog_6;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?q=$uri$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name kxstu.com;
return 301 https://$host$request_uri;
}

这样配置好,重启nginx服务器再次访问就会出现加密的https访问了,注意最后一个server是配置的301跳转,当您访问http://kxstu.com时,会自动跳转到:https://kxstu.com,至此nginx服务器的Https配置已经成功!检测是否成功的标志就是您的网站URL旁是否有一个绿色的锁头。
重启nginx服务器

1
systemctl restart nginx

apache

1
2
3
4
5
6
7
8
9
10
11
12
13
Listen  443
NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot "/data/web/www"
ServerName kxstu.com:443
ErrorLog "logs/error.log"
CustomLog "logs/access.log" combined
<IfModule mod_ssl.c>
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
</IfModule>
</VirtualHost>
  • apache301重定向
1
2
3
4
<VirtualHost *:80> 
ServerName kxstu.com
RedirectMatch permanent ^/(.*) https://kxstu.com/$1
</VirtualHost>
注意: server.key就是privkey.pem server.crt 就是fullchain.pem
感谢老板!