🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# nginx与https联动-自签发证书 [TOC] ## 一、 简述 [官方链接](http://nginx.org/en/docs/http/ngx_http_ssl_module.html) **证书说明** 网络安全性最首先要解决的就是身份验证问题;而解决身份验证问题,最主要的方式就是借助私钥和公钥,而最主要的公钥信息获取就变得尤为重要:利用第三方公正者,公正公钥信息 目前标准的证书存储格式是x509,还有其他的证书格式,需要包含的内容为: * 公钥信息,以及证书过期时间 * 证书的合法拥有人信息 * 证书该如何被使用(不用关注) * CA颁发机构信息 * CA签名的校验码 **所需软件和模块** * 需要服务器已安装`openssl`和`openssl-devel`软件 * 需要nginx安装了`--with-http_ssl_module`模块 ## 二、 创建自签发证书 ### 1.创建私钥文件 1)方法1 ```sh cd /etc/nginx/conf.d/ openssl genrsa 2048 >server.key chmod 600 server.key ``` 创建私钥信息,并指定私钥的长度为2048,并将生成的私钥信息保存在一个文件中 2)方法2 ```sh cd /etc/nginx/conf.d/ openssl genrsa -out server.key 2048 chmod 600 server.key ``` 将私钥信息直接进行保存,加密长度一定要放在输出文件后面 3)方法3 ```sh cd /etc/nginx/conf.d/ (umask 077;openssl genrsa -out server1024.key 1024) ``` 利用小括号,实现子shell功能,临时修改umask,使之创建的私钥文件权限为600 ### 2.生成证书文件信息 1)生成自签发证书[测试用] ``` openssl req -new -x509 -key server.key -out server.crt -days 365 req <- 用于请求创建一个证书文件 new <- 表示创建的是新的证书 x509 <- 表示定义证书的格式为标准格式 key <- 表示调用的私钥文件信息 out <- 表示输出证书文件信息 days <- 表示证书的有效期 ``` ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200306/092244406.png) 2)申请真的CA证书[正式用] 向CA机构申请在正式环境中用的证书分两步 1. 生成证书请求文件 ```sh openssl req -new -key httpd.key -out httpd.csr ``` 2. 申请CA证书 拿此csr文件与公司资质文件,向ca机构进行申请,申请成功会得到一个正式证书 ## 三、配置网站服务,加载私钥和证书信息 nginx此部分配置 ```sh server { listen 80; server_name www.etiantian.org; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 443; server_name www.etiantian.org; ssl on; ssl_certificate /etc/nginx/conf.d/server.crt; ssl_certificate_key /etc/nginx/conf.d/server.key; root html/www; index index.html index.htm; } ``` 使用浏览器访问[略]