准备
- 备案过的域名
- ssl证书(免费的就行)
申请证书
- 登录阿里云控制台产->产品与服务->SSL 证书
- 点击购买证书,证书类型选择免费型DV SSL,完成购买
- 购买完以后,出现了Symantec 免费版 SSL,操作项下按钮点击。
- 完善资料、提交审核。我这里域名用的是阿里云DNS服务,按照提示勾选证书绑定的域名在阿里云的云解析,系统生成CSR,直至提交审核。
10分钟左右,申请的证书就能审核通过。
下载证书
确认已获得证书就可以去证书控制台下载证书了,解压后会得到两个文件
3064445_readingblog.cn.key 3064445_readingblog.cn.pem
不同的服务器类型,证书配置方法也不一样,这里我们以nginx服务器为例做介绍
配置nginx的https
- 创建存储证书的目录(任意)
sudo mkdir -p /usr/local/nginx/ssl/key
- 上传证书
scp -p 22 /usr/local/nginx/ssl/key/3064445_readingblog.cn.pem root@47.92.166.108:/usr/local/nginx/ssl/key
scp -p 22 /usr/local/nginx/ssl/key/3064445_readingblog.cn.key root@47.92.166.108:/usr/local/nginx/ssl/key
上传完毕后,目录结构如下
[root@iZ8vbfhrv1vsbp44n9fdtoZ key]# pwd
/usr/local/nginx/ssl/key
[root@iZ8vbfhrv1vsbp44n9fdtoZ key]# ls
3064445_readingblog.cn.key 3064445_readingblog.cn.pem
- 修改nginx配置文件
# HTTPS server
#
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/ssl/key/3064445_readingblog.cn.pem;
ssl_certificate_key /usr/local/nginx/ssl/key/3064445_readingblog.cn.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
# ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /opt/nodejs/blog-server/static/blog;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /blog {
proxy_pass http://0.0.0.0:3000;
}
}
- 重启nginx
/usr/local/nginx/sbin/nginx -s reload
如果提示the “ssl” parameter requires ngx_http_ssl_module,说明nginx还需要安装ngx_http_ssl_module模块。
nginx安装ngx_http_ssl_module
我的nginx安装目录为:/usr/local/nginx,源码包在/usr/nginx-1.14.0
首先进入源码包目录,执行
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
配置完成后,运行命令make命令(注意此处不能进行make install,否则就是覆盖安装)
make
替换已安装好的nginx包,替换之前先备份:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
先停止nginx服务:
/usr/local/nginx/sbin/nginx -s stop
将刚刚编译好的nginx覆盖掉原有的nginx
cp ./objs/nginx /usr/local/nginx/sbin/
最后就可以启动nginx了
/usr/local/nginx/sbin/nginx
删除备份
rm -rf /usr/local/nginx/sbin/nginx.bak
我们可以通过命令查看ssl模块是否已经加入成功
[root@iZ8vbfhrv1vsbp44n9fdtoZ nginx-1.14.0]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module