{{item}}
{{item.title}}
{{items.productName}}
{{items.price}}/年
{{item.title}}
部警SSL证书可实现网站HTTPS加密保护及身份的可信认证,防止传输数据的泄露或算改,提高网站可信度和品牌形象,利于SEO排名,为企业带来更多访问量,这也是网络安全法及PCI合规性的必备要求
前往SSL证书除了从权威CA(证书颁发机构)获取证书外,自签名SSL证书因其免费、灵活的特点,在内部网络、开发测试环境等场景中被广泛使用。然而,自签名SSL证书默认不被操作系统和浏览器信任,需要手动建立根证书信任链才能实现安全通信。本文将详细介绍自签名SSL证书的生成方法以及根证书信任链的建立过程。
自签名SSL证书是由用户自行生成并签名的证书,而非由权威CA签发。与CA签发的证书相比,它具有以下特点:
1. 免费性:无需向CA支付费用,适合个人开发者、小型团队或内部测试使用。
2. 灵活性:可根据实际需求自定义证书的有效期、加密算法、域名等信息。
3. 信任局限性:由于没有经过权威CA的背书,默认不被操作系统、浏览器等信任,使用时会出现安全警告。
基于这些特点,自签名SSL证书主要适用于以下场景:
生成自签名SSL证书通常需要使用OpenSSL工具,以下是详细的生成步骤:
私钥是证书的核心组成部分,用于加密和解密数据,需妥善保管。打开终端,执行以下命令生成RSA私钥:
1 openssl genrsa -out server.key 2048
其中, server.key 是私钥文件名, 2048 表示私钥的长度(位数),位数越高,安全性越强,但加密解密速度会略有下降,2048位是较为常用的选择。
CSR文件包含了证书的相关信息,如域名、组织名称等,用于生成证书。执行以下命令:
1 openssl req -new -key server.key -out server.csr
执行命令后,会提示输入一系列信息,包括国家、地区、组织名称、Common Name(证书绑定的域名,自签名证书可填写IP地址或域名)等。其中,Common Name是关键信息,需确保与实际使用的域名或IP地址一致,否则会出现证书不匹配的警告。
使用私钥对CSR进行签名,生成自签名证书:
1 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
参数说明:
执行命令后,会生成 server.crt 证书文件,至此,自签名SSL证书生成完成。
根证书是信任链的起点,是由权威CA签发的、被广泛信任的证书。操作系统和浏览器中预装了大量权威CA的根证书,当验证一个证书时,会逐级向上追溯,直到找到一个已被信任的根证书,从而确定该证书的合法性。
对于自签名证书,由于没有对应的权威根证书,需要将自签名证书本身作为根证书,或生成一个根证书,再用根证书签发服务器证书,建立自己的信任链。建立根证书信任链的作用是让操作系统和浏览器信任自签名证书,避免出现安全警告,确保HTTPS通信正常进行。
如果需要建立更规范的信任链,可先生成根证书,再用根证书签发服务器证书。以下是生成根证书的步骤:
1 openssl genrsa -out root.key 2048
1 openssl req -new -key root.key -out root.csr
在输入信息时,Common Name 可填写自定义的根证书名称,如 “My Root CA”。
1 openssl x509 -req -days 3650 -in root.csr -signkey root.key -out root.crt
这里将根证书的有效期设置为 10 年(3650 天),可根据需要调整。
如果已生成根证书,可用根证书来签发服务器证书,使服务器证书处于根证书信任链之下:
1 openssl x509 -req -in server.csr -CA root.crt -CAkey root.key -CAcreateserial -out server.crt -days 365
参数说明:
将根证书(若直接使用自签名证书作为服务器证书,可将该证书作为根证书)安装到操作系统的信任根证书库中,步骤因操作系统而异:
(1)Windows系统:
(2)macOS系统:
(3)Linux系统(以Ubuntu为例):
1 sudo cp root.crt /usr/local/share/ca-certificates/
1 sudo update-ca-certificates
大多数浏览器会使用操作系统的根证书库,当根证书在操作系统中安装并信任后,浏览器通常也会信任相应的服务器证书。但部分浏览器可能有自己的证书管理机制,可在浏览器的设置中手动导入并信任根证书。
以Chrome浏览器为例:
完成根证书信任链的建立后,需要验证其是否生效:
1. 在服务器上部署证书:将生成的服务器证书(server.crt)和私钥(server.key)部署到Web服务器(如 Nginx、Apache)中,配置HTTPS服务。以Nginx为例,在配置文件中添加以下内容:
1 server {
2 listen 443 ssl;
3 server_name yourdomain.com; # 与证书中的Common Name一致
4
5 ssl_certificate /path/to/server.crt;
6 ssl_certificate_key /path/to/server.key;
7
8 # 其他配置...
9 }
重启Nginx服务使配置生效。
2. 访问服务器:在浏览器中输入 https://yourdomain.com (或服务器IP地址),如果没有出现安全警告,说明信任链建立成功;若仍有警告,需检查证书配置、根证书安装等步骤是否正确。
3. 使用命令验证:可使用 curl 命令验证,若返回正常的HTTP响应,且没有SSL相关错误,说明信任链生效:
1 curl https://yourdomain.com
1. 私钥安全:私钥是证书安全的核心,必须妥善保管,避免泄露。私钥文件的权限应设置为仅所有者可读写,如在Linux系统中设置为 chmod 600 server.key 。
2. 证书有效期管理:自签名证书的有效期可自定义,但需定期更新,避免证书过期导致服务不可用。可设置提醒,在证书过期前重新生成并部署证书。
3. 适用场景限制:自签名证书仅适用于内部环境或测试场景,不应在公网环境中使用。公网环境中应使用权威CA签发的证书,以确保用户信任和通信安全。
4. 证书信息准确性:生成证书时,填写的Common Name等信息应准确无误,特别是域名信息,否则会导致证书不匹配的警告。
通过以上步骤,我们可以生成自签名SSL证书并建立根证书信任链,在内部环境和测试场景中实现安全的HTTPS通信。在实际应用中,需根据具体需求选择合适的证书类型,并严格遵守安全规范,保障网络通信的安全性。
Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构Sectigo、Digicert、GeoTrust、GlobalSign,以及国内CA机构CFCA、沃通、vTrus、上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!