在宝塔(BT)和1Panel等服务器管理面板中,通常只需要上传和配置两个主要的SSL/TLS证书文件:私钥(Private Key, .key)和证书(Certificate, .crt/.pem)。这是因为在大多数情况下,这两个文件足以完成SSL/TLS的基本配置。以下是每个文件的作用和原因:
1. 私钥(Private Key, .key)
- 作用:私钥是用于加密和解密数据的重要文件,它与公钥配对使用,公钥包含在证书文件中。私钥用于解密由客户端(如浏览器)加密的数据,并用于创建SSL/TLS握手中的数字签名,以证明服务器的身份。
- 安全性:私钥应始终保持私密,只有服务器才能访问。泄露私钥将导致安全风险,因此私钥文件(.key)通常需要单独存储并严格保护。
2. 证书(Certificate, .crt/.pem)
- 作用:证书文件包含服务器的公钥和服务器身份信息,由受信任的证书颁发机构(CA)签名。浏览器通过验证证书中的签名和域名匹配情况来确认服务器的身份。证书还可以包含中间证书,以帮助建立完整的证书链。
- 格式:证书文件通常以.crt或.pem格式存储。
.crt
和.pem
格式的内容相似,都是基于Base64编码的证书,但扩展名不同。
3. 为什么没有提供中间证书或证书链配置?
- 证书链的情况:在一些管理面板中,例如宝塔和1Panel,只要求上传主要的证书和私钥文件,因为许多CA会将中间证书(Certificate Chain)合并在主证书文件中。也就是说,
.crt
或.pem
文件中可能已经包含了完整的证书链。 - 简化配置:为用户简化操作,面板可能隐藏了对中间证书文件的单独配置选项。许多面板默认假设用户上传的证书文件已经包含了所有必需的证书链
如果需要手动配置证书链
- 如果你发现浏览器或其他工具提示证书链不完整(例如评级被降级为B),你可以手动编辑证书文件,将中间证书附加到主要证书文件中,再上传到面板。(国内服务器可以用https://myssl.com/ssl.html,国外服务器可以用https://www.ssllabs.com/ssltest/)
- 另一种方式是在Nginx或Apache配置中手动指定中间证书文件,但这通常需要手动编辑服务器配置文件,而不是通过面板进行配置。
总结
宝塔和1Panel只要求配置Private Key和Certificate文件,因为在大多数情况下,这两个文件足以完成SSL/TLS配置,并简化了用户操作。如果需要配置中间证书,可以将其合并到主证书文件中,或者在服务器配置中手动指定。
要辨别哪个是中间证书(Intermediate Certificate),哪个是主证书(服务器证书),可以通过以下几种方法:
1. 查看证书的“颁发者”和“主题”信息
证书中包含了“颁发者”(Issuer)和“主题”(Subject)字段,通过这些字段可以判断证书的级别。
- 服务器证书(主证书):其“主题”(Subject)字段中通常会包含你的域名,而“颁发者”(Issuer)字段通常是中间证书的名称或CA的名称。
- 中间证书:其“主题”(Subject)字段一般表示该证书属于一个中间证书颁发机构,而“颁发者”(Issuer)字段通常是更高级别的根证书颁发机构。
例如:
- 服务器证书:
- Subject:
CN=yourdomain.com
- Issuer:
CN=Intermediate CA
- Subject:
- 中间证书:
- Subject:
CN=Intermediate CA
- Issuer:
CN=Root CA
- Subject:
2. 使用openssl
工具分析
你可以使用openssl
工具来查看证书的详细信息,判断哪个是服务器证书,哪个是中间证书。
检查证书文件的内容:
openssl x509 -in your_certificate.crt -text -noout分析输出:
Subject
字段:通常包含证书的持有者,例如你的域名。Issuer
字段:显示颁发该证书的CA。如果Issuer
是你信任的中间CA或根CA,那么这个证书是服务器证书。如果Issuer
是一个中间CA,那么这个证书可能是中间证书。
3. 通过证书链顺序辨别
通常情况下,证书链的顺序如下:
- 服务器证书(最靠近你的网站域名的证书)
- 中间证书(连接服务器证书和根证书的桥梁)
- 根证书(CA机构的最高证书,一般由操作系统或浏览器预装)
证书文件通常按这个顺序排列,所以在提供的证书内容中,排在最前面的往往是服务器证书,随后是中间证书。
4. 在线工具
你也可以使用一些在线的SSL检查工具,上传你的证书文件,这些工具会自动解析并显示证书链的各个部分,让你轻松识别哪个是服务器证书,哪个是中间证书。例如,SSL Labs的测试工具可以详细展示证书链信息。
通过这些方法,你可以轻松辨别哪个是服务器证书,哪个是中间证书,从而正确配置你的SSL/TLS证书。
关于合并证书:
这两部分证书的作用如下:
- 服务器证书:这是你的服务器的SSL/TLS证书,用于加密通信和确认服务器的身份。
- 中间证书:用于链接服务器证书和受信任的根证书,帮助客户端(如浏览器)验证证书链的完整性。
如何合并和配置这些证书
在一些场景下(如使用宝塔和1Panel),你可能需要将服务器证书和中间证书合并成一个文件,然后将其配置在面板中。
合并证书
将两个证书文件合并为一个文件,顺序为服务器证书在前,中间证书在后。
—–BEGIN CERTIFICATE—– [服务器证书内容] —–END CERTIFICATE—– —–BEGIN CERTIFICATE—– [中间证书内容] —–END CERTIFICATE—–配置在Nginx或面板中
- Private Key (KEY):上传你的私钥文件,文件格式通常为
.key
。 - Certificate (CRT/PEM):将合并后的证书文件上传,这个文件包含服务器证书和中间证书。
在Nginx配置文件中,使用如下方式配置:
ssl_certificate /etc/nginx/cert/zzxvhub.com.crt; # 合并后的证书文件
ssl_certificate_key /etc/nginx/cert/zzxvhub.com.key; # 私钥文件
如果你的面板只接受两个文件,确保 .crt 文件中已经合并了所有需要的证书(包括服务器证书和中间证书)。这样客户端在访问你的服务器时,能够通过完整的证书链验证服务器的身份。
通过这种方式,你可以确保证书链的完整性,从而避免出现“不完整的证书链”警告,提升SSL/TLS部署的安全性和合规性。
对于linux 可以直接上次中间件证书和服务器证书使用命令合并
cat /path/to/your/server.crt /path/to/intermediate.crt > /etc/nginx/cert/zzxvhub.com-bundle.crt其中 /path/to/your/server.crt
是您的服务器证书,/path/to/intermediate.crt
是中间证书文件。
验证结果:比如你的域名是zzxgo.com
openssl s_client -connect zzxgo.com:443 -servername zzxgo.com成功后,您不应该再看到“unable to verify the first certificate”的错误。