基于Nginx部署ssl证书
基于Nginx部署ssl证书
需求说明
通常情况下我们的系统是通过HTTP协议来通信的,但是在浏览器里访问时,会被认为是不安全的链接。提示如下图:
那为了解决这种问题,需要使用https协议来通信,https需要申请一张ssl证书。
实施方案
申请ssl证书
- 证书可以通过阿里云、百度云、腾迅云平台免费申请,也可以根据自己网站情况申请收费的
- 同时,也可以使用certbot自己去生成证书
本文中的证书是通过阿里云免费申请的,证书申请成功,会有不同服务器版本的,例如nginx、iis、apache等,这里选用的是nginx版本的。
申请的证书需要上传到服务器,假设:
- 证书地址: /home/ssl/cert-1541059989454_isantian.com.crt
- **地址:/home/ssl/cert-1541059989454_isantian.com.key;
nginx配置
server{
listen 80;
server_name www.abcd.com;
# 将80端口请求重定向到https协议请求中
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443;
server_name www.abcd.com;
# 配置SSL证书
ssl on;
ssl_certificate /home/ssl/cert-1541059989454_isantian.com.crt;
ssl_certificate_key /home/ssl/cert-1541059989454_isantian.com.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;
}
通过以上配置,便可实现nginx配置ssl证书。通过~./nginx -s reload~重启nginx服务器即可实现
可能遇到问题:
nginx:[emerg]unknown directive ssl
通过上述配置,在重启nginx的时候可能会遇到~nginx:[emerg]unknown directive ssl~这样的问题。
这是由于nginx在安装时没有安装ssl模块。
解决方案
- 在nginx解压缩目录中,重新编译ssl模块:
命令: ./configure –with-http_stub_status_module –with-http_ssl_module - 执行 make 命令
./configure和make命令执行完以后,会更新nginx文件 - 备份原nginx文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak - 替换nginx文件
cp objs/nginx /usr/local/nginx/sbin/nginx
objs/nginx:这个目录是nginx解压缩目录下
到此,基于nginx部署ssl证书结束