最近开发一个微信公众号小程序, 服务器端要求 https, 于是在申请到的三 丰 云 免费云 主 机上部署了 nginx, 并配置启用了 443https. 记录一下设置过程:
第一步, nginx 重新编译添加 ssl 模块
1, 查看 nginx 版本号:
- cd /usr/local/nginx/sbin
- ./nginx -V
2, 下载 nginx 对应版本源码包并解压
- cd /usr/local/src
- wget http://nginx.org/download/nginx-1.14.1.tar.gz
- tar -zxvf nginx-1.14.1.tar.gz
3, 编译
- cd nginx-1.14.1
- ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
- make
4, 复制执行文件
- cd /usr/local/src/nginx-1.14.1/objs
- killall nginx
- cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
- cp objs/nginx /usr/local/nginx/sbin/nginx
- /usr/local/nginx/sbin/nginx -t
- cd /usr/local/nginx/sbin/
- ./nginx
第二步, SSL 证书申请
1, 确认需要申请证书的域名
2, 生成私钥和 csr 文件
在 Linux 机器上执行以下命令生成私钥
#openssl genrsa -out server.key 2048
在 Linux 机器上执行以下命令生成 csr 文件
#openssl req -new -key server.key -out certreq.csr
以下黑色标识文字仅供参考, 请根据商户自己实际情况进行填写
- Country Name: CN // 您所在国家的 ISO 标准代号, 中国为 CN
- State or Province Name:guandong // 您单位所在地省 / 自治区 / 直辖市
- Locality Name:shenzhen // 您单位所在地的市 / 县 / 区
- Organization Name: Tencent Technology (Shenzhen) Company Limited // 您单位 / 机构 / 企业合法的名称
- Organizational Unit Name: R&D // 部门名称
- Common Name: www.example.com // 通用名, 例如: www.itrus.com.cn. 此项必须与您访问提供 SSL 服务的服务器时所应用的域名完全匹配.
- Email Address: // 您的邮件地址, 不必输入, 直接回车跳过
- "extra"attributes // 以下信息不必输入, 回车跳过直到命令执行完毕.
执行上面的命令后, 在当前目录下即可生成私钥文件 server.key 和 certreq.csr csr 文件
3,
a, 将生成的 csr 文件提交给第三方证书颁发机构申请对应域名的服务器证书, 同时将私钥文件保存好, 以免丢失.
b, 服务器配置 https 协议, 三种免费的方法 (可使用免费的证书)
4, 证书申请后, 证书颁发机构会提供服务器证书内容和两张中级 CA 证书, 请按证书颁发机器说明生成服务器证书, 此处假设服务器证书文件名称为 server.pem
5, 将生成的私钥文件 server.key 和服务器证书 server.pem 拷贝至服务器指定的目录即可进行 HTTPS 服务器配置
第三步, HTTPS 服务器配置
1, Nginx 配置
- server {
- listen 443; #指定 ssl 监听端口
- server_name www.example.com;
- ssl on; #开启 ssl 支持
- ssl_certificate /etc/nginx/server.pem; #指定服务器证书路径
- ssl_certificate_key /etc/nginx/server.key; #指定私钥证书路径
- ssl_session_timeout 5m;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定 SSL 服务器端支持的协议版本
- ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #指定加密算法
- ssl_prefer_server_ciphers on; #在使用 SSLv3 和 TLS 协议时指定服务器的加密算法要优先于客户端的加密算法
- # 以下内容请按域名需要进行配置, 此处仅供参考
- location / {
- return 444;
- }
- }
来源: http://www.bubuko.com/infodetail-3098988.html