Nginx配置客户端SSL双向认证
对于 NGINX 的 HTTPS 配置,通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可用性并通过 SSL 进行通讯加密。
但特殊情况下我们也需要对客户端进行验证,只有受信任的客户端才能使用服务接口,此时我们就需要启用双向认证来达到这个目的,只有 当客户端请求带了可用的证书才能调通服务端接口 。
CA 与自签名
CA 是权威机构才能做的,并且如果该机构达不到安全标准就会被浏览器厂商“封杀”,前不久的沃通、StartSSL 就被 Mozilla、Chrome 封杀了。不过这并不影响我们进行双向认证配置,因为我们是自建 CA 的..
为了方便,我们就在 NGINX 的目录下进行证书相关制作:
创建相关目录
#mkdir ssl
#cd ssl
制作 CA 私钥
#openssl genrsa -out ca.key 2048
制作 CA 根证书(公钥)
#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。
请求验证
1、浏览器验证
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2017-07-11 【java.lang.UnsupportedClassVersionError】版本不一致出错
2017-07-11 spring异常被吞的一种情形
2017-07-11 spring自定义标签之 自我实现
2017-07-11 spring自定义标签之 规范定义XSD