离线SSL

要实现完全离线的 HTTPS,需要获得一个自签名的 SSL/TLS 证书。自签名证书是由自己创建的,而不是由受信任的证书颁发机构 (CA) 签名的。它们不能被大多数 Web 浏览器自动信任,而是需要手动安装到每个访问网站的计算机或设备上。

生成SSL

生成私钥文件和证书签名

openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

其中domain.key是生成的私钥文件名,domain.csr 是生成的 CSR 文件名。在执行该命令时,您需要输入一些信息,例如国家、省份、城市、组织名称、通用名称等。您可以根据自己的需求进行调整,但必须至少提供通用名称,这应该是您的域名或 IP 地址。

生成自签名证书

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

其中 domain.crt 是生成的自签名证书文件名。该命令将使用私钥文件和 CSR 文件签名证书,证书将有效期为 365 天。

部署SSL

本文不提供详细步骤,下面是一些参考

在debian10系统上通过apache部署HTTPS网站,实现https部署测试工具Dvwa

安装SSL

Windows

  1. 双击证书文件(.crt 或 .pem 格式),打开证书安装向导。
  2. 选择 “当前用户” 或 “本地计算机” 中的一个,然后单击 “下一步”。
  3. 选择 “将所有的证书都放入下列存储”,然后单击 “浏览”。
  4. 选择 “受信任的根证书颁发机构” 存储,然后单击 “确定”。
  5. 单击 “下一步”,然后单击 “完成” 完成证书安装过程。

macOS

  1. 双击证书文件(.crt 或 .pem 格式),打开钥匙串访问应用程序。
  2. 将证书文件拖到钥匙串访问中。
  3. 双击证书,打开证书详细信息。
  4. 展开 “信任” 部分,将 “使用该证书时” 设置为 “始终信任”。
  5. 关闭证书详细信息窗口,系统会提示你输入管理员密码以保存更改。

Linux

Linux类型的系统中,还需要区分不同的子类型

Ubuntu/Debian 类

使用以下命令将证书复制到系统级证书存储库中

sudo cp domain.crt /usr/local/share/ca-certificates/

然后更新存储库

sudo update-ca-certificates

现在,已经成功地在 Ubuntu 或 Debian 上安装了自签名 SSL/TLS 证书。

CentOS 或 Fedora类

使用以下命令将证书复制到系统级证书存储库中

sudo cp domain.crt /etc/pki/ca-trust/source/anchors/

然后更新存储库

sudo update-ca-trust extract

现在,已经成功地在CentOS 或 Fedora上安装了自签名 SSL/TLS 证书。