负载均衡双向证书配置方法

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 本文目的 本文主要介绍在使用负载均衡服务中相关证书的含义,以及上传、配置方法。 说明: 服务器证书是用于用户浏览器检查服务器送过来的证书是否是由自己信赖的中心所签发的,服务器证书需要上传到 SLB 控制台; CA 证书作用:服务器要求客户浏览器发送自己的证书,收到后服务器用 CA 证

本文目的

本文主要介绍在使用负载均衡服务中相关证书的含义,以及上传、配置方法。

说明

  • 服务器证书是用于用户浏览器检查服务器送过来的证书是否是由自己信赖的中心所签发的,服务器证书需要上传到 SLB 控制台;
  • CA 证书作用:服务器要求客户浏览器发送自己的证书,收到后服务器用 CA 证书验证客户浏览器的证书(即 Client 证书),如果没有通过验证,拒绝连接,
  • CA 证书在开启双向认证功能后也需要上传到 SLB 控制台,对于开启双向认证功能一般用户可以选择使用 openssl 生成自签 CA 证书和 Client 证书。 

服务器证书的生成

服务器证书可以到云盾 证书服务 购买,也可以到其他服务商处购买。

创建一个新的 CA 证书 

在 /root 目录下新建 ca 文件夹,进入 ca,创建几个子文件夹:
$ sudo mkdir ca
$ cd ca
$ sudo mkdir newcerts private conf server
newcerts 子目录将用于存放 CA 签署过的数字证书(证书备份目录);private 用于存放 CA 的私钥;conf 目录用于存放一些简化参数用的配置文件;server 存放服务器证书文件。

1. conf 目录新建 openssl.conf 文件 

编辑其内容如下:

[ ca ]
 
default_ca      = foo                   # The default ca section
 
 
 
[ foo ]
 
dir            = /root/ca         # top dir
 
database       = /root/ca/index.txt          # index file.
 
new_certs_dir  = /root/ca/newcerts           # new certs dir
 
 
 
certificate    = /root/ca/ private /ca.crt         # The CA cert
 
serial         = /root/ca/serial             # serial no file
 
private_key    = /root/ca/ private /ca.key  # CA private key
 
RANDFILE       = /root/ca/ private /.rand      # random number file
 
 
 
default_days   = 365                     # how long to certify for
 
default_crl_days= 30                     # how long before next CRL
 
default_md     = md5                     # message digest method to use
 
unique_subject = no                      # Set to 'no' to allow creation of
 
                                          # several ctificates with same subject.
 
policy         = policy_any              # default policy
 
 
 
[ policy_any ]
 
countryName = match
 
stateOrProvinceName = match
 
organizationName = match
 
organizationalUnitName = match
 
localityName            = optional
 
commonName              = supplied
 
emailAddress            = optional 


2 生成私钥 key 文件 

$ cd /root/ca
$ sudo openssl genrsa -out private /ca.key
输出
Generating RSA private key, 512 bit long modulus
..++++++++++++
.++++++++++++
e is 65537 ( 0x10001 )

private 目录下有 ca.key 文件生成。

注:openssl 默认生成 512 位的。一般是用 2048 位的。


3 生成证书请求 csr 文件

$ sudo openssl req - new -key private /ca.key -out private /ca.csr

提示输入 Country Name,输入 CN 并回车后:
提示输入 State or Province Name (full name),输入 ZheJiang并回车后:
提示输入 Locality Name,输入 HangZhou并回车后:
提示输入 Organization Name,输入 Aliyun并回车后:
提示输入 Organizational Unit Name,输入 Dev 并回车后:
提示输入 Common Name,如果没有域名的话,输入 xxx.xxx.cn 并回车后:

提示输入 Email Address,输入 Aliyun@aliyun.com 并回车后:

提示输入 A challenge password,这个是根证书口令。输入 123456 并回车后:


private 目录下有 ca.csr 文件生成。


4 生成凭证 crt 文件

$ sudo openssl x509 -req -days 365 -in private /ca.csr -signkey private /ca.key -out private /ca.crt

控制台输出

private 目录下有 ca.crt 文件生成。


5 为我们的 key 设置起始序列号

$ sudo echo FACE > serial

可以是任意四个字符


6 创建 CA 键库

$ sudo touch index.txt


7  "用户证书" 的移除创建一个证书撤销列表

$ sudo openssl ca -gencrl -out /root/ca/ private /ca.crl -crldays 7 -config "/root/ca/conf/openssl.conf"

输出

Using configuration from /root/ca/conf/openssl.conf

private 目录下有 ca.crl 文件生成。

客户端证书的生成

创建存放 key 的目录 users

$ sudo mkdir users

位置 /root/ca/users。

为用户创建一个 key

$ sudo openssl genrsa -des3 -out /root/ca/users/client.key 1024

要求输入 pass phrase,这个是当前 key 的口令,以防止本密钥泄漏后被人盗用。两次输入同一个密码(比如我这里输入 123456),users 目录下有 client.key 文件生成。

为 key 创建一个证书签名请求 csr 文件

$ sudo openssl req - new -key /root/ca/users/client.key -out /root/ca/users/client.csr


提示输入 pass phrase,即 client.key 的口令。将 3.2 步保存的 pass phrase 输入后并回车:

要求你输入和 2.3 步一样的那些问题。输入的内容要求完全一致。但 A challenge password 是客户端证书口令(请注意将它和 client.key 的口令区分开,这边设置密码为test),可以与服务器端证书或者根证书口令一致:  


users 目录下有 client.csr 文件生成。

使用我们私有的 CA key 为刚才的 key 签名

$ sudo openssl ca -in /root/ca/users/client.csr -cert /root/ca/ private /ca.crt -keyfile /root/ca/ private /ca.key -out /root/ca/users/client.crt -config "/root/ca/conf/openssl.conf"

输出 


两次都输入 y,users 目录下有 client.crt 文件生成。

将证书转换为大多数浏览器都能识别的 PKCS12 文件

$ sudo openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12


要求输入 client.key 的 pass phrase,输入 2.3.2 步输入的 pass phrase 并回车后: 


要求输入 Export Password,这个是客户端证书的保护密码(其作用类似于 3.3 保存的口令),在客户端安装证书的时候需要输入这个密码。我是输入client。
users 目录下有 client.p12 文件生成。

负载均衡配置证书

此处上传的为向证书服务商申请的服务器证书。

https://help.aliyun.com/document_detail/32336.html

https://help.aliyun.com/document_detail/32337.html

相关证书的FAQ

https://help.aliyun.com/document_detail/27661.html

双向认证FAQ

https://help.aliyun.com/document_detail/34952.html

这里需要配置的内容:

CA证书上传,即上传上述描述生成的CA根证书,即“2 创建一个新的 CA 证书”描述的内容。

客户端证书,是需要导入浏览器中,即“3 客户端证书的生成”描述的内容。

测试效果:

1、双向认证,但是没有导入客户端证书,访问效果如下图。


2、客户端证书导入过程,在此省略。

主要过程为:

下载客户端证书-》双击运行-》输入证书密码-》选择导入证书存储位置-》完成。

重启浏览器测试。


3、双向认证,导入客户端证书,访问效果如下图。




相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
18天前
|
负载均衡 网络协议 网络安全
SLB-Backend多实例部署配置健康检查
【10月更文挑战第22天】
44 3
|
13天前
|
弹性计算 负载均衡 算法
slb 配置不当
【11月更文挑战第2天】
32 10
|
14天前
|
负载均衡 监控 应用服务中间件
slb配置同步问题
【11月更文挑战第1天】
27 3
|
22天前
|
弹性计算 负载均衡 算法
slb配置监听器
【10月更文挑战第18天】
38 3
|
1月前
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
41 3
|
1月前
|
负载均衡 Java 应用服务中间件
Nginx负载均衡配置
Nginx负载均衡配置
|
1月前
|
负载均衡 Kubernetes 区块链
随机密码生成器+阿里k8s负载均衡型服务加证书方法+移动终端设计+ico生成器等
随机密码生成器+阿里k8s负载均衡型服务加证书方法+移动终端设计+ico生成器等
53 1
|
1月前
|
负载均衡 算法 Java
java中nginx负载均衡配置
java中nginx负载均衡配置
41 0
|
1月前
|
负载均衡 算法 应用服务中间件
【nginx】配置Nginx实现负载均衡
【nginx】配置Nginx实现负载均衡
|
2月前
|
负载均衡 Java 开发者
Ribbon框架实现客户端负载均衡的方法与技巧
Ribbon框架为微服务架构中的客户端负载均衡提供了强大的支持。通过简单的配置和集成,开发者可以轻松地在应用中实现服务的发现、选择和负载均衡。适当地使用Ribbon,配合其他Spring Cloud组件,可以有效提升微服务架构的可用性和性能。
34 0
下一篇
无影云桌面