NGINX 配置 SSL 双向认证

  以前总觉得配置nginx这种问题看看网上教程就行了自己配置的时候才发现有些问题真的不是看一篇两篇教程就能搞定的 所以自己写一个备忘的配置流程 说不定什么时候就用上了。

  对于 nginx HTTPS 配置,通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可用性并通过 SSL 进行通讯加密。但特殊情况下我们也需要对客户端进行验证,只有受信任的客户端才能使用服务接口,此时我们就需要启用双向认证来达到这个目的,只有 当客户端请求带了可用的证书才能调通服务端接口 这里我们使用自己生成的CA来生成证书。


CA与自签名

制作CA私钥

openssl genrsa -out ca.key 2048

制作CA公钥/根证书

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

 

Common Name 随意填写;其它可以填”.”


服务器端证书

制作服务器私钥

openssl genrsa -out server.pem 1024
openssl rsa -in server.pem -out server.key

生成签发请求

openssl req -new -key server.pem -out server.csr

 

Common Name填写访问服务器时域名,配置nginx时用到,不能与CA的相同 其它填写”.”

 

CA签发证书

openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt


客户端证书

制作私钥

openssl genrsa -out client.pem 1024

openssl rsa -in client.pem -out client.key 


生成签发请求

openssl req -new -key client.pem -out client.csr

 

Common Name填写访问服务器时域名,配置nginx时用到,不能与CA的相同 其它填写”.”

 

CA签发

openssl x509 -req -sha256 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out client.crt


配置NGINX

这里指向百度

Ssl_certificate : 服务器公钥地址

Ssl_certificate_key : 服务器私钥地址

Ssl_client_certificate : CA公钥地址 验证客户端证书是否是同一CA签发

Ssl_verify_client : on 打开双向认证

配置好后 重新加载NGINX : service nginx reload

测试时可以在/etc/hosts 中添加 127.0.0.1 uuid.v1


测试

curl --insecure --key client.key --cert client.crt 'https://uuid.v1' 

收到百度网页信息 成功!!


参考:

https://www.cnblogs.com/UnGeek/p/6049004.html

https://blog.csdn.net/zhangyong125/article/details/49949863




猜你喜欢

转载自blog.csdn.net/zkt286468541/article/details/80864184