文章目录
- 本文经过笔者实际测试,使用阿里云,搭建nginx服务器https访问配置。按照步骤进行,可完美实现你的本地配置!
- 踩坑不易,希望同学多多支持!!
前提条件
- 本文操作的内容,假定你已经为你的服务器安装了nginx服务(需要带有ssl模块支持的编译选项!!!)
- 我的nginx版本是:nginx/1.14.0
操作方法
1、SSL证书的获取和部署方法
1.1 SSL证书的获取(阿里云)
-
登录“阿里云控制台”,输入关键词寻找:SSL证书,找到“安全(云盾)”下的 SSL证书(应用安全)标签,点击进去
-
最左侧点击“证书资源包”,来获取免费的SSL证书
-
打开证书申请页面,填写申请内容,包括:域名、姓名、邮箱和手机号
-
提交申请后,在“证书资源包”–>“证书管理” 标签下,会生成一个状态是“已签发”的”DigiCert免费版SSL“证书,点击“下载”
-
在弹出的右侧边框中,根据自己实际的web服务器,选择对应的下载(这里我选择的是Nginx)
1.2 证书的部署
- 证书下载后先解压,得到两个文件:.pem和.key
这两种格式,分别存储的是 证书base64加密 和 私钥base64加密,还有格式分割符
.pem文件:存储的是证书内容
.key文件:存储的是私钥内容
- 在自己的云服务器中进行如下操作
- (1)在nginx配置目录 /etc/nginx/ 下,创建一个 ssl 目录
- (2)将.pem文件和.key文件,上传到该 ssl 目录下
- <注>:其他目录文件无须纠结,与本文无关!!!
1.3 配置nginx
- 编辑Nginx配置文件(nginx.conf),修改与证书相关的配置内容。
在配置文件中定位到HTTP协议代码片段(http{}),并在HTTP协议代码里面添加以下server配置
#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
##### 很多网站都没有提到这一点,我调试的时候踩了好多坑,请谨慎!!!
listen 443 ssl; ######## 必须要有 ssl 字段,否则443无法访问!!!!
#配置HTTPS的默认访问端口为443。
server_name mydomain.com; #需要将mydomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate ssl/cert.pem; #需要将cert.pem替换成已上传的证书文件的名称。
ssl_certificate_key ssl/cert.key; #需要将cert.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; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录。
index index.html index.htm;
}
}
- 该功能可根据实际情况选择:设置HTTP请求自动跳转HTTPS。如果你希望所有的HTTP访问自动跳转到HTTPS页面,则可以在需要跳转的HTTP站点下添加以下rewrite语句。
server {
listen 80;
server_name mydomain.com; #需要将mydomain.com替换成证书绑定的域名。
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
index index.html index.htm;
}
}
- 保存退出
- 启动或重启nginx:
- 启动nginx: nginx -c /etc/nginx/nginx.conf
- 重启nginx: nginx -s reload
2、https访问验证
- 打开浏览器,输入url:https://mydomain.com,打开nginx首页
- 此时可以看到该站点是安全的,说明nginx配置成功