为什么要自签证书

  1. 本地环境进行开发时,有的API接口要求必须要https才能对接
  2. HTML网站转换渐进式网页应用(PWA)时,chrome要求必须要https
  3. 可以给本地hosts中的"虚拟域名"安装ssl证书,实现https
  4. 更加贴近线上环境、更好debug、屏蔽一些浏览器默认禁止访问http网站的问题

自签流程

安装 OpenSSL: 如果你的系统没有安装 OpenSSL,请先安装它。在 macOS 上,可以使用 Homebrew:brew install openssl;在 Linux 上,可以使用你的发行版的包管理器(例如,在 Debian/Ubuntu 上使用 apt-get install openssl)。不建议使用windows****创建证书颁发机构 (CA): 这将生成一个根证书和私钥,你的服务器证书将由它签名。

# 生成私钥
# 这将创建一个 2048 位的 RSA 私钥,并提示你设置密码。**务必记住这个密码!**
openssl genrsa -des3 -out myCA.key 2048

# 生成自签名证书
# 这将使用私钥生成一个自签名证书,有效期为 365 天。 
# 你将被提示输入一些信息,例如国家、组织等。这些信息并不关键,但建议填写一些可识别的信息。
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 365 -out myCA.pem

生成服务器证书: 这将为你的域名生成一个证书,由之前创建的 CA 签名。

#生成私钥  这将创建一个 2048 位的 RSA 私钥。
openssl genrsa -out server.key 2048

# 生成证书签名请求 (CSR)
# 这将生成一个 CSR 文件,包含你的域名信息。
# 你将被提示输入一些信息,务必将“Common Name (CN)”设置为你的域名,例如 zekibu.im
openssl req -new -key server.key -out server.csr

# 签名 CSR
# 这将使用 CA 证书和私钥来签名 CSR,生成最终的服务器证书。
openssl x509 -req -in server.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out server.crt -days 365 -sha256

安装证书

server.crt 文件配置到你的 Web 服务器 (例如 Nginx 或 Apache) 中。 你需要将 server.key 文件与 server.crt 一起配置。 具体配置方法取决于你的 Web 服务器。

信任证书

为了避免浏览器警告,你需要将 myCA.pem 添加到你的操作系统信任的根证书存储中。 这通常需要通过图形界面进行操作,具体方法取决于你的操作系统。

重要提醒

记住替换 zekibu.im 为你的实际域名。 在执行这些命令之前,建议备份你的现有证书和密钥。 如果对 OpenSSL 命令不熟悉,请仔细阅读 OpenSSL 的文档。
自签名证书仅用于开发和测试环境,​不适用于生产环境​。 生产环境应使用受信任的证书颁发机构 (CA) 签发的证书。