nginx配置https
ssl证书获取有两种方式:购买相关机构签发的证书;自签发生成ssl证书,在这里我们使用openssl来生成证书
1、生成CA私钥
openssl genrsa 1024 > server.key
2、生成CA自己的证书申请文件
openssl req -new -key server.key > server.csr
填写以下内容:
Country Name (2 letter code) [XX]:CN 国家名称简写,两位字母
State or Province Name (full name) []:BJ 省份名称
Locality Name (eg, city) [Default City]:BJ 城市名称
Organization Name (eg, company) [Default Company Ltd]:CSA 组织名称,随便写
Organizational Unit Name (eg, section) []:CAS 组织名称缩写,随便写
Common Name (eg, your name or your server's hostname) []:ZHANGSAN 姓名
Email Address []:1234@163.com 邮箱
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 密码为空
An optional company name []: 公司名称为空
生成了两个证书server.csr和server.key,server.csr是证书文件,server.key是私钥
3、根据csr证书申请书生成crt证书
openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
所有证书生成完毕
server.csr:证书申请文件
server.key:私钥文件
server.crt:crt证书文件
4、配置nginx
在server域中添加
vim /nginx/conf/vhosts/https.conf
listen 18843 ssl; 添加启用ssl支持
ssl_certificate /nginx/conf/server.crt; 网站证书文件路径
ssl_certificate_key /nginx/conf/server.key; 网站证书私钥文件路径
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; 使用的ssl协议为TLSv1.1,TLSv1.2,TLSv1.3
ssl_session_cache shared:cache1:1M; 设置储存ssl会话的缓存区名称为cache,占用内存大小1M
配置方式有以下几种:
off:禁用https会话缓存
none:启用伪会话缓存支持,告知客户端进行会话复用,服务端不缓存会话参数
builtin:配置openssl缓存支持,无法在nginx的多个进程中共享缓存内容,格式为builtin[:size],
size为缓存占用内存的大小
shared:配置nginx共享缓存机制,可以在nginx多个工作进程中共享缓存内容,1M内存可以存储
4000多个会话,格式为shared:name:size,name为共享缓存区名称,size为缓存占用内存的大小
ssl_session_timeout 5m; 设置客户端会话的缓存时间,默认是5m
重启nginx
/nginx/sbin/nginx -s reload
5、登录验证
因为是自签名的ssl证书,不是机构颁发的,所以浏览时会有红线提示不安全
注意:当前ios系统不支持打开自签名的https网站,如果需要在ios上访问自签名的https网站(一般的情况是需要在测试环境调试),那么需要将ssl证书先上传到ios的设备上再进行访问