对于 NGINX 的 HTTPS 配置,一般状况下咱们只须要实现服务端认证就行,由于浏览器内置了一些受信任的证书颁发机构(CA),服务器端只须要拿到这些机构颁发的证书并配置好,浏览器会本身校验证书的可用性并经过 SSL 进行通信加密。nginx
但特殊状况下咱们也须要对客户端进行验证,只有受信任的客户端才能使用服务接口,此时咱们就须要启用双向认证来达到这个目的,只有 当客户端请求带了可用的证书才能调通服务端接口 。windows
CA 是权威机构才能作的,而且若是该机构达不到安全标准就会被浏览器厂商“封杀”,前不久的沃通、StartSSL 就被 Mozilla、Chrome 封杀了。不过这并不影响咱们进行双向认证配置,由于咱们是自建 CA 的..浏览器
为了方便,咱们就在 NGINX 的目录下进行证书相关制做:安全
建立相关目录服务器
#mkdir sslcurl
#cd sslui
制做 CA 私钥加密
#openssl genrsa -out ca.key 2048url
制做 CA 根证书(公钥)server
#openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
制做服务端私钥
#openssl genrsa -out server.pem 1024
#openssl rsa -in server.pem -out server.key
生成签发请求
#openssl req -new -key server.pem -out server.csr
用 CA 签发
#openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
和服务端证书制做同样。
至此须要的证书都弄好了,如今开始配置Nginx。
部分主要配置:
server{
ssl on;
ssl_certificate ssl/server.crt; #server公钥
ssl_certificate_key ssl/server.key; #server私钥
ssl_client_certificate ssl/ca.crt; #根级证书公钥,用于验证各个二级client
ssl_verify_client on;
}
配置好后就就从新reload nginx。
一、浏览器验证