用ACME 安装免费ssl证书,让你的网站免费使用https

在centOS7 中 安装并添加 acme 免费证书,还挺好用的

系统环境: centos7

第一步: 安装 acme.sh

curl https://get.acme.sh | sh

有些系统会提示:

-bash: acme.sh: command not found

执行下面的命令让 PATH 生效即可:

source ~/.bashrc

 

下载证书,我是用的DNS api 的方式生成,因为这种方式功能强大,而且支持泛域名与多域名方式,还可以自动续期。

首先需要去 DNS 解析商出创建一个 DNS token. ---一个小插曲,我用的是腾讯云,但是在腾讯云出,没有找到DNS 的 token 创建的地方,才发现腾讯云的 dns 提供上是dnspod

用ACME 安装免费ssl证书,让你的网站免费使用https_第1张图片

我这里使用的是 DNS api  的模式,这种方式可以自动更新证书,功能很强大。建议使用这种方式,ACME.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成.

以dnspod(腾讯云使用的就是dnspod) 为例子:

export DP_Id="DNS管理中心创建的ID"

export DP_Key="DNS管理中心创建的Token"

acme.sh --issue --dns dns_dp -d domain.com -d *.domain.com  

 

阿里云例子:

export Ali_Key="LTAI31Sxxxxxx"

export Ali_Secret="rUyJSUaGxxxxxxx"

acme.sh --issue --dns dns_ali -d domain.com -d *.domain.com 

阿里云获取DNS token 的方式

生成结果: 

用ACME 安装免费ssl证书,让你的网站免费使用https_第2张图片

 

然后在执行安装与copy证书到 nginx 目录下,  下面命令行的路径为,你的nginx所在路径,并新建一个ssl目录

acme.sh  --installcert  -d  .com   \

        --key-file   /etc/nginx/ssl/.key \     

        --fullchain-file /etc/nginx/ssl/fullchain.cer \

        --reloadcmd  "service nginx force-reload"

用ACME 安装免费ssl证书,让你的网站免费使用https_第3张图片

这个错误可以忽略,手动重启一下你的Nginx 就好了。

最后在配置一下你Nginx服务器,需要修改 server 项:

user  www www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
{
        include       mime.types;
		#include luawaf.conf;

		include proxy.conf;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
		fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
		limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;


server
    {
    listen 443 ssl;
    server_name qq249191508.com; 
    root /www/server/nginx/html; 
    index index.html index.htm;
    ssl_certificate  ../ssl/fullchain.cer;
    ssl_certificate_key ../ssl/qq249191508.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        index index.html index.htm;
    }
}
	
server {
    listen 80;
    server_name www.qq249191508.com;
    rewrite ^(.*)$ https://$host$1 permanent;
}

include /www/server/panel/vhost/nginx/*.conf;
}
然后,重启nginx 服务器,就OK了

上面,需要修改 fullchain.cer  domain.key  这两个文件所安装的目录,让nginx找到这两个文件。

然后在浏览器输入你的域名,会制动跳转到 https.

备注:

Let's Encrypt 的证书有效期是 90 天的,需要定期重新申请,不过acme在安装的时候就已经设置了自动更新,ACME 是自动更新的。所以不用担心。
acme.sh自动更新原理:acme安装时会自动创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.

关注我的个人博客: http://www.qq249191508.com/

你可能感兴趣的:(用ACME 安装免费ssl证书,让你的网站免费使用https)