Nginx配置证书实现客户端与服务器双向认证

正常配置下的SSL是服务器认证,但是有时候为了加强校验,将会引入双向认证(多用于内部服务)。

首先配置 nginx ssl,在 nginx 配置文件中加入:

ssl on;
ssl_certificate /usr/local/ssl/xxx.crt;
ssl_certificate_key /usr/local/ssl/xxx.key;

导入ssl

之后可以将自己签署的 ca 根证书加入电脑的信任列表(此举为了让浏览器通过SSL核验):

1、首先下载 ca.crt 到本地,在 windows 上直接双击打开;

2、点击安装按钮,过程中证书安装选择添加到受信任的根证书颁发机构,确认完成后即可。

重启浏览器后访问,一般是通过了,不会提示证书有误的警告了。火狐浏览器不与IE共享证书库,可能需要另导入一份,具体的参考本站文章。

在上一步成功后,在 nginx 配置文件中加入:

ssl_client_certificate /usr/local/ssl/ca.crt;
ssl_verify_client on;

其中 ssl_client_certificate 配置 ca 的 crt 地址。

生成并安装p12证书(简称个人客户端证书):

openssl pkcs12 -export -clcerts -in xxx.crt -inkey xxx.key -out xxx.p12

这一步是利用网站已有的 crt 和 key 来生成,可能需要输入密码完成。

将生成的证书下载到本地,在 windows 上双击安装,过程参考上方,不同的是安装p12将证书需要安装到个人(路径选择),重启浏览器检查是否成功。

附:

如果没有导入证书,则会直接提示400错误,而如果已成功导入证书在访问的时候就可以直接进入(可能会提示你选择证书)。

相关推荐:
一般来说,主流的Web服务软件,通常都基于两种基础密码库:OpenSSL和Java。 Tomcat、Weblogic、JBoss等,使用Java提供的密码库。通过Java的Keytool工具,生成Java Keystore(JKS)格式的证书文件。 Apache、Nginx等 …
Android 编译时出现“finished with non-zero exit value”,这是怎么了?一直找不到原因所在,搞得整个项目都跨了。 尝试恢复解决: 1.想想你刚刚动了啥导致的?如果可以,请备份后回退到之前的状态,试着看看可能恢 …
漏洞等级采用CVSS 2.0标准的评分原则,对单个漏洞进行基本向量评分。CVSS : Common Vulnerability Scoring System,即“通用漏洞评分系统”,是一个“行业公开标准,其被设计用来评测漏洞的严重程度,并帮助确定所需反 …
memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。 这种技术被称为“惰性过期”。因此,memcached不会在过期监视上耗费CPU时间,与redis是有区别的。 memcached的过期时间,有一个 …
1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效。 2. 数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架LiteOr …
拿起手机扫一扫即可带走我!