ubuntu中nginx部署服务器后添加SSL证书解决SSL handshake failed问题

avatar
作者
筋斗云
阅读量:0

文章思路:写这篇文章主要是本人在使用nginx部署好服务器后,采用浏览器打开服务器地址;在采用pyqt开发的软件中,采用QNetwork模块连接后,想下载服务器的zip压缩包时,发现QNetwork提示报了SSL handshake failed异常问题

解决方式:添加SSL证书进行解决,目前要获取根证书有以下方式;

(1)从证书颁发机构(CA)获取:许多证书颁发机构提供根证书的下载。你可以访问相关 CA 的官方网站,查找他们的根证书下载页面或文档,按照其指示进行下载和安装。

(2)使用操作系统或浏览器的内置根证书:操作系统和浏览器通常会内置一些受信任的根证书。这些根证书可以用于验证服务器证书的合法性

(3)从应用程序或服务提供商获取:如果你使用特定的应用程序或服务,该应用程序或服务提供商可能会提供所需的根证书

(4)采用linux生成自签名根证书:如果你是在开发或测试环境中,并且需要自己生成根证书,可以使用工具如 OpenSSL 来生成自签名的根证书。但请注意,自签名根证书在公共网络中可能不被广泛信任。

如果是正式企业,本人建议去官方中购买证书,如果是用于开发调试,则可以使用linux自带的根证书,而本文主要讲的就是linux中如何去自定义生成根证书并部署在服务器中, 即方式(4)

一、以下是使用 OpenSSL 生成自签名根证书的一般步骤:

(1)打开终端或命令提示符。

(2)生成私钥:

# 这将生成一个 2048 位的 RSA 私钥,并保存为 rootCA.key 文件。 openssl genrsa -out rootCA.key 2048

(3)使用私钥生成证书签名请求(CSR):

# 在执行此命令时,您将被要求输入一些信息,如国家代码、地区、组织名称等。这些信息将包含在证书中。 openssl req -new -key rootCA.key -out rootCA.csr

(4)自签名生成根证书:

# 自签名生成根证书 openssl x509 -req -days 365 -in rootCA.csr -signkey rootCA.key -out rootCA.crt

这里 -days 365 表示证书的有效期为 365 天。

生成的 rootCA.crt 就是自签名的根证书。

二、在nginx服务器中添加根证书

1.安装自定义根证书:将生成的根证书(rootCA.crt)安装到 Linux 系统的受信任根证书颁发机构存储中。这可以通过系统的证书管理工具或浏览器进行安装。

要将生成的根证书(rootCA.crt)安装到 Linux 系统的受信任根证书颁发机构存储中,可以按照以下一般步骤进行操作:

(1)打开终端或命令行界面。将根证书文件(rootCA.crt)复制到 Linux 系统中的某个目录,例如 /usr/local/share/ca-certificates/ 或 /etc/ssl/certs/

(2)以管理员身份运行以下命令,更新系统的证书存储

    ->Debian/Ubuntu 系统:sudo update-ca-certificates

 ->CentOS/RHEL 系统:sudo update-ca-trust

(3)安装过程可能会提示你输入管理员密码。

(4)完成后,根证书将被安装到系统的受信任根证书颁发机构存储中。

请注意,具体的步骤可能因 Linux 发行版的不同而有所差异。上述步骤是常见的通用方法,但某些发行版可能有其特定的证书管理工具或命令。此外,确保你以管理员身份执行命令,并根据系统的要求进行相应的操作

2.配置 Nginx

(1)在 Nginx 的配置文件(通常是nginx.confhttpd.conf)中,找到与 SSL 相关的部分(2)添加或修改以下配置指令

 ->ssl_certificate:指定服务器证书的路径(例如,ssl_certificate /path/to/server.crt)。

 ->ssl_certificate_key:指定服务器证书的私钥路径(例如,ssl_certificate_key /path/to/server.key

(2)下面是我自己的服务器的设置信息:

(3)重启Nginx: systemctl restart nginx即可生效

(4)查看PyQt中的软件下载结果:.zip下载成功,完美解决

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!