开发环境建立自签名证书,运行https网站

发布时间 2023-10-16 14:26:19作者: towinar

介绍

HTTPS是互联网上保护数据传输安全性的标准之一。在开发和测试环境中,我们经常使用自签名SSL证书来启用HTTPS连接。然而,有时候在配置HTTPS服务器时,可能会出现一些问题,特别是关于SSL证书和私钥的配置。

什么是自签名SSL证书?

自签名SSL证书是由服务器自行签发,而不是由受信任的第三方证书颁发机构(CA)签发的SSL证书。这意味着它没有经过公共信任的验证,因此在生产环境中通常不建议使用。自签名SSL证书用于测试、开发或内部服务器的情况,它可以提供加密连接,但客户端(如浏览器)通常会警告用户它不是受信任的证书。

生成自签名SSL证书

生成自签名SSL证书通常需要以下步骤:

  1. 生成私钥:使用openssl工具生成私钥,这是一个用于加密和解密数据的关键。
  2. 生成证书请求(CSR):CSR文件包含有关服务器和组织的信息以及公钥,它用于向证书颁发机构请求签发SSL证书。
  3. 自签名证书:使用生成的CSR文件和私钥,签发自签名SSL证书。
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

其中key.pem是私钥,csr.pem是证书请求文件,server.crt是使用证书请求文件生成的SSL证书。
通常正式环境server.crt由受信任的CA签发。

使用http-server运行ssl网站

npx http-server -C server.crt -K key.pem -S .

SSL的工作原理

SSL的工作原理可以概括为以下步骤:

  1. 客户端向服务器请求建立安全连接:客户端向服务器发送连接请求,并请求使用SSL。
  2. 服务器发送证书:服务器将其SSL证书(server.crt)发送给客户端,证明其身份。
  3. 客户端验证证书:客户端验证证书的有效性,包括检查证书是否由受信任的CA签发,并检查证书是否已过期。
  4. 密钥交换:如果证书验证成功,客户端生成一个随机的对称密钥,并使用服务器的公钥(包含在SSL证书中)对其进行加密,然后将其发送给服务器。
  5. 数据加密和通信:服务器使用自己的私钥来解密客户端发送的对称密钥,然后客户端和服务器都使用对称密钥来加密和解密通信中的数据。
  6. 建立安全连接:客户端和服务器现在可以安全地通信,数据在传输过程中受到加密保护。

SSL确保了安全的数据传输,防止中间人攻击和数据泄漏。私钥、CSR和证书是SSL协议中关键的组成部分,确保了通信的安全性和可信性。