阿里云centos7+nginx使用安装免费的泛域名SSL证书
准备
- 已购买已备案的域名
- acme.sh 是一个自动申请 https 证书的脚本,使用方便,功能也非常强大。
安装:curl https://get.acme.sh | sh或
wget -O - https://get.acme.sh | sh这样你已经把 acme.sh 这个小工具安装到你本地的
~/.acme.sh/中了,而不会在你系统的其它地方装些乱七八糟的东西。
生成证书
这篇文章后面用到的一键脚本申请Let's Encrypt泛域名SSL证书,是利用第三方域名DNS API接口快速申请的,这样。无论我们Linux VPS、服务器使用的何种WEB环境都可以快速申请。
根据脚本的介绍,提供且支持我们常见的第三方DNS,包括DNSPOD、CLOUDXNS、阿里云DNS、GoDaddy、CLOUDFLARE、PowerDNS、Linode 等40多家DNS服务商。如果我们域名有用哪家的DNS,然后到对应的商家申请API。查看支持的商家:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
阿里云购买域名的朋友可以走这个极速通道,因为阿里云有接口可以直接操作域名控制台,这个接口已经被整合到了 acme.sh 这个工具里面。只要设置一下 Ali_Key 和 Ali_Secret,获取入口:https://ak-console.aliyun.com/#/accesskey
- 在你的命令行中执行如下命令:
export Ali_Key="换成你的 AccessKey ID" export Ali_Secret="换成你的 Access Key Secret" - 开始申请证书
im20.life 是我的域名,这里需要换成你的。acme.sh --issue --dns dns_ali -d im20.life -d '*.im20.life'
参数解释:
acme.sh :表示使用你刚安装好的acme.sh
--issue :申请证书
--dns dns_ali:使用阿里云的 dns 服务,在阿里云买的域名,在没有修改默认 dns 的前提下,都可以使用这个参数来申请 https 证书。
-d im20.life:-d表示 domain,后面跟你要申请域名。
-d '*.im20.life':这里的-d 与上方一样,-d 参数可以带多个,这里的'*.im20.life'中的 * 表示泛域名,只要申请了这个证书像(www.im20.life, m.im20.life ...)这类的二级域名都可以使用此证书来实现 https。注意 baidu.com这个域名不在这条规则里,所以上面又加了一条-d im20.life,这样你的主域名、二级子域名均可以使用此证书。
证书生成成功后,默认保存在 .acme.sh/你的顶级域名 中。如下图所示即为成功。

配置Nginx
1、移动证书到/etc/nginx/cert文件夹,若无该文件夹,自行创建。
cp ~/.acme.sh/im20.life/fullchain.cer /etc/nginx/cert/fullchain.cer
cp ~/.acme.sh/im20.life/im20.life.key /etc/nginx/cert/im20.key
2、新建 ssl-params.conf 并把它放到 Nginx 的 snippets 目录中。
# /etc/nginx/snippets/ssl-params.conf
server_tokens off;ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;ssl_session_tickets on;ssl_stapling on;
ssl_stapling_verify on;resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 10s;
ssl_prefer_server_ciphers on;# 证书路径 绝对地址
ssl_certificate /etc/nginx/cert/fullchain.cer;
ssl_certificate_key /etc/nginx/cert/im20.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";add_header Strict-Transport-Security "max-age=31536000;includeSubDomains;preload";
add_header X-Frame-Options deny;
add_header X-Content-Type-Options nosniff;
add_header x-xss-protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: https:; connect-src 'self' https:; img-src 'self' data: https: blob:; style-src 'unsafe-inline' https:; font-src https:";
3、接下来在 Nginx 主配置文件中开启 SSL 支持
# /etc/nginx/nginx.confhttp {....ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
4、配置虚拟主机
# /etc/nginx/conf.d/im20.life.conf
server {listen 80 default_server;listen [::]:80 default_server;server_name im20.life www.im20.life; return 301 https://$server_name$request_uri;
}server {# 注意我们设置该站点为默认站点,并移除了 nginx 默认的 default 配置listen 443 ssl http2 fastopen=3 reuseport default_server;listen [::]:443 ssl http2 fastopen=3 reuseport default_server;server_name www.im20.life im20.life;# 引入 SSL 及 PHP 配置include snippets/fastcgi-php.conf;include snippets/ssl-params.conf;root /home/www/websites/im20.life/public;access_log /home/www/websites/im20.life/storage/logs/nginx-access.log;error_log /home/www/websites/im20.life/storage/logs/nginx-error.log error; index index.php;# 当访问域名是不 im20.life 强制跳转到 https://im20.lifeif ($host != 'im20.life' ) {rewrite ^/(.*)$ https://im20.life/$1 permanent;}
}
二级域名blog.im20.life的配置
# /etc/nginx/conf.d/blog.im20.life.conf
server {listen 80;listen [::]:80;server_name blog.im20.life; return 301 https://$server_name$request_uri;
}
server {# 如果多个域名配置在同一主机,这里只需要监听到 433 就可以了,# 不需要再添加 ssl http2 fastopen=3 reuseport default_server 之类的了listen 443; listen [::]:443;root /home/www/websites/blog.im20.life/public-admin;access_log /home/www/websites/blog.im20.life/storage/logs/nginx-access.log;error_log /home/www/websites/blog.im20.life/storage/logs/nginx-error.log error;server_name blog.im20.life; index index.php;client_max_body_size 20M;include snippets/fastcgi-php.conf;include snippets/ssl-params.conf; if ($host != 'blog.im20.life' ) {rewrite ^/(.*)$ https://blog.im20.life/$1 permanent;}
}
5、虚拟主机配置完成后重启nginx即可
service nginx restart
完!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
