SSL 证书 HTTPS 双向认证指南

双向认证(又称客户端认证或 SSL/TLS 双向认证)要求客户端和服务器在建立 HTTPS 连接时都要进行身份验证。

相关产品
SSL 证书 产品页,含版本规格、价格与购买入口。

一、概述

HTTPS 双向认证通常用于需要高度安全性的场景,其中服务器和客户端都需要验证对方的身份。此时,除了配置服务器的证书之外,还需要配置客户端的证书,以实现通信双方的双向认证功能。

二、应用场景

1. 企业内部系统:用于内部系统之间的通信,例如在企业内部的微服务架构中,各个服务之间需要进行双向身份验证。

2. 银行和金融机构:用于客户端与银行服务器之间的通信,确保客户端和服务器都是合法且受信任的。

3. 政府机构通信:政府部门间或政府与合作伙伴之间的通信,确保通信双方的身份是可靠的。

4. 医疗保健领域:用于医疗信息系统中,确保只有经过授权的客户端可以访问和传输敏感的健康信息。

三、基本流程介绍

1. 生成服务器端证书。

2. 配置服务器。

·在 Web 服务器(如Apache、Nginx)上安装服务器证书和私钥。

3. 生成客户端证书。

4. 配置服务器以接受客户端证书。

·在服务器上配置双向认证以要求客户端提供有效的证书。

5. 配置客户端。

·安装客户端证书。

6. 测试连接。

·客户端尝试连接到服务器。

·服务器验证客户端证书,客户端验证服务器证书。

四、操作步骤

本章节以腾讯云证书为例,指导你如何在 Nginx 服务器中部署双向认证。

注意:说明:

五、步骤一:购买服务器证书

1. 登录 SSL 证书购买页,购买服务器证书。若你无需指定证书品牌,可进入推荐购买选购性价比最高的 SSL 证书。

六、步骤二:配置服务器

1. 请在 SSL 证书控制台 中选择你需要使用的证书并单击下载。

2. 分别下载服务端 server.cloud.tencent.com和客户端client.cloud.tencent.com证书。如下:


3. 下载客户端client.cloud.tencent.com证书的根证书。如下:


4. 将下载得到的证书文件server.cloud.tencent.com_bundle.crt、server.cloud.tencent.com.key和client.cloud.tencent.com_root.crt上传至服务器。

5. 编辑 Nginx 根目录下的 conf/nginx.conf 文件。修改内容如下:

注意:说明:

注意:由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on。

server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name server.cloud.tencent.com;
#请填写证书文件的相对路径或绝对路径
ssl_certificate server.cloud.tencent.com_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key server.cloud.tencent.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#开启客户端验证
ssl_verify_client on;
#请填写客户端根证书文件的相对路径或绝对路径
ssl_client_certificate client.cloud.tencent.com_root.crt;
#证书验证深度。腾讯云免费证书建议设置为2
ssl_verify_depth 2; location / { #网站主页路径。此路径仅供参考,具体请你按照实际目录操作。 #例如,你的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。 root html; index index.html index.htm; } }

6. 在 Nginx 根目录下,通过执行以下命令验证配置文件问题。

./sbin/nginx -t

·若存在,请你重新配置或者根据提示修改存在问题。

·若不存在,请执行 步骤7。

7. 在 Nginx 根目录下,通过执行以下命令重启 Nginx。

./sbin/nginx -s reload

七、测试结果

直接使用 curl 命令进行访问。

curl https://server.cloud.tencent.com

返回报错400 Bad Request。如下:

使用 curl 命令带上受信任的客户端证书和私钥进行访问。

curl https://server.cloud.tencent.com –cert /tmp/other_client.cloud.tencent.com_bundle.crt –key /tmp/other_client.cloud.tencent.com.key

返回成功。如下:

赞 (0)
上一篇 4天前
下一篇 4天前