> 技术文档 > 证书SSL certificate problem: unable to get local issuer certificate

证书SSL certificate problem: unable to get local issuer certificate


目录:

    • 1、报错现象
    • 2、操作流程和命令
      • 2.1、查看证书是否存在
      • 2.2、获取证书或者让客户提供证书
    • 3、生成自签名证书CA
      • 3.1、创建自签名证书
      • 3.2、配置 Web 服务器以使用证书
      • 3.3、导入证书到浏览器

1、报错现象

证书SSL certificate problem: unable to get local issuer certificate
出现此错误一般就是服务器上未导入证书导致的。

2、操作流程和命令

2.1、查看证书是否存在

openssl x509 -in /path/to/certificate.crt -noout -text

如果文件存在并且是有效的X.509证书,该命令将显示证书的详细信息。如果文件不存在或不是一个有效的X.509证书,你会收到一个错误消息。

2.2、获取证书或者让客户提供证书

证书SSL certificate problem: unable to get local issuer certificate
这样就可以得到一个crt后缀的证书文件了。
然后配置到具体的证书目录下即可。

3、生成自签名证书CA

生成一个自签名证书(通常不被证书办法机构认可,只适用于测试环境等,正式环境建议申请证书),并使其能够通过 HTTPS 访问,执行以下步骤:

3.1、创建自签名证书

可以使用 OpenSSL 来创建自签名证书。以下是生成证书的步骤:

1、安装 OpenSSL
如果您的系统上没有安装 OpenSSL,可以通过以下方式安装:

  • Windows:从 OpenSSL 官网 下载并安装。
  • Linux:通过包管理器安装,通常命令为 sudo apt install openssl(Ubuntu/Debian)或 sudo
    yum install openssl(CentOS/RHEL)。

2、生成私钥
使用 OpenSSL 生成一个私钥文件(server.key):

openssl genpkey -algorithm RSA -out server.key -aes256

3、创建证书签署请求(CSR)
然后,生成证书签署请求(CSR),但这里我们不需要将其提交给证书颁发机构,而是直接自签。

openssl req -new -key server.key -out server.csr

4、生成自签名证书
最后,使用生成的 CSR 和私钥创建自签名证书(server.crt),并设置证书的有效期为 365 天:

openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365

现在,您就有了自签名证书 server.crt 和私钥 server.key。

3.2、配置 Web 服务器以使用证书

您可以使用 Apache、Nginx 或任何其他支持 HTTPS 的 Web 服务器来配置此证书。以下是如何在常见的 Web 服务器中配置它:

Apache 配置:
1、将证书和私钥文件上传到服务器上的一个目录,例如 /etc/ssl/。

2、修改 Apache 配置文件,通常是 /etc/httpd/conf.d/ssl.conf 或 /etc/apache2/sites-available/default-ssl.conf,将以下配置添加或修改:

SSLEngine onSSLCertificateFile /path/to/server.crtSSLCertificateKeyFile /path/to/server.key

3、然后重启 Apache 服务:

sudo systemctl restart apache2 # 对于 Ubuntu/Debiansudo systemctl restart httpd # 对于 CentOS/RHEL

Nginx 配置:
1、将证书和私钥文件上传到服务器的某个目录,如 /etc/ssl/。

2、修改 Nginx 配置文件(如 /etc/nginx/sites-available/default)并在 server 块中添加:

server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; location / { root /var/www/html; index index.html; }}

3、重新加载 Nginx 配置:

sudo systemctl reload nginx

3.3、导入证书到浏览器

由于是自签名证书,浏览器会显示安全警告。要避免警告,您可以手动将证书导入到浏览器的信任列表中。

Chrome/Firefox 操作步骤:
1、打开浏览器。
2、访问您的 HTTPS 网站,浏览器会显示“您的连接不是私密连接”的警告。
3、选择“高级”或“详细信息”,然后选择“继续访问”。
4、在浏览器设置中找到“证书管理”选项。

  • Chrome:进入 chrome://settings/certificates。
  • Firefox:进入 about:preferences#privacy,然后点击“查看证书”。

5、导入自签名证书(即 server.crt 文件)。
通过这些步骤,您就可以成功地创建自签名证书并将其导入到浏览器,从而实现 HTTPS 访问。

注意:
安全性:自签名证书通常不推荐用于生产环境,因为它不会被任何第三方证书颁发机构信任,容易受到中间人攻击。
浏览器警告:用户访问时会看到警告,提醒他们证书是由不受信任的机构签发的。如果您打算提供公开服务,建议从受信任的 CA(证书颁发机构)购买证书。