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错误,而如果已成功导入证书在访问的时候就可以直接进入(可能会提示你选择证书)。

相关推荐:
TablePlus是一款现代化和友好的数据库GUI工具,适用于MySQL、PostgreSQL、SQLite等的管理。 查询,编辑和管理您的数据库容易与本机应用程序,可以运行速度快,像兰博基尼。只需要半秒钟就能站起来跑步。 通 …
在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在命令行窗口中不能正确显示内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。 如果想正确显 …
安装示例前提 php安装目录:/usr/local/php5 php.ini配置文件路径:/usr/local/php5/etc/php.ini Nginx安装目录:/usr/local/nginx Nginx网站根目录:/usr/local/nginx/html 1、安装编译工具 #shell#yum in …
首先解释一下分配单元大小的含义:所谓分配单元大小,即是系统对磁盘以及移动存储设备进行读写的最小单位。 在极限速度以内,分配单元大小设置越大读写速度越快,反之则越慢。但是这里要注意一个问题,单元 …
背景信息: 2019年4月02日,监测到Kubernetes官方发布安全通告,披露了一个Kubernetes API服务器patch请求远程拒绝服务漏洞CVE-2019-1002100。 漏洞描述: 拥有补丁权限的恶意用户通过发送特定超长的“json- …
拿起手机扫一扫即可带走我!