Nginx的安装
- 下载nginx源码包。此次使用的是nginx-1.8.1.tar.gz
- 解压安装包。解压命令 tar -xvf nginx-1.8.1.tar.gz
- 进入解压包,检测环境。./configure –prefix=/etc/nginx –with-http_ssl_module
- 编译make
- 安装make instal
证书生成
- 服务端证书制作。前提安装好openssl,如果没有安装则使用yum -y install install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre-devel。
- 在nginx目录中创建keys目录,存放证书。进入keys目录
- 创建CA私钥 openssl genrsa -out ca.key 2048
- openssl req -new -x509 -days 36500 -key ca.key -out ca.crt
制作服务端证书:
- 还是在nginx的keys目录
- 创建服务端私钥
- openssl genrsa -out server.pem 2048
- openssl rsa -in server.pem -out server.key
- 生成签发请求openssl req -new -key server.pem -out server.csr
- 使用CA证书进行签发
- openssl x509 -req -sha256 -extfile /etc/pki/tls/openssl.cnf -extensions v3_req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 36500 -out server.crt
- 验证签发证书是否正确openssl verify -CAfile ca.crt server.crt
- 制作p12证书(导入浏览器)openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
开启nginx ssl功能(记住自己设置的密码)
- nginx/conf/nginx.conf文件server节点增加如下配置
- listen 443 ssl;
- ssl_certificate /etc/nginx/keys/server.crt; #服务端的签发证书
- ssl_certificate_key /etc/nginx/keys/server.key; #服务端的私钥
- ssl_client_certificate /etc/nginx/keys/ca.crt; #根证书公钥
- ssl_verify_client on; #开启对终端的验证
- ssl_protocols TLSv1.2; #支持的TLS协议
- ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL'; #加密套件
浏览器测试
由于是双向认证,直接通过浏览器访问https地址是被告知400 Bad Request(No required SSL certificate was sent)的,需要在本机安装client证书。
windows上安装的证书需要pfx格式,也叫p12格式,生成方式如下:
下载刚刚在服务器生成的 server.p12
- 打开浏览器
- 设置
- 高级设置(安全管理 证书管理 导入证书 输入密码)
安装成功后,重启浏览器输入网址访问,浏览器可能会提示你选择证书,选择刚才安装的那个证书即可。
此时有些浏览器会提示用户该证书不受信任,地址不安全之类,这是因为我们的server证书是我们自己颁发的,而非真正的权威CA机构颁布(通常很贵哦~),忽略它既可。
查看文档
https://blog.csdn.net/u011275733/article/details/80506085
https://blog.csdn.net/zqs0905/article/details/22155199