Mkcert:本地主机的有效HTTPS证书


如今,HTTPS的使用已成为所有站点和Web应用程序的强制性要求。 但是在开发过程中存在正确测试的问题。 自然,Let's Encrypt和其他CA不会为本地主机颁发证书。

传统上,有两种解决方案。

  1. 通过openssl或其他方式生成的自签名证书,这是为本地主机生成私钥和自签名证书的最简单方法:

    openssl req -x509 -out localhost.crt -keyout localhost.key \ -newkey rsa:2048 -nodes -sha256 \ -subj '/CN=localhost' -extensions EXT -config <( \ printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth") 

    但是,由于受信任的存储区中没有相应的证书颁发机构,因此此类证书将在浏览器中引起信任错误。
  2. 诀窍是注册一个新域,例如localhost.example.com,该域在本地解析为127.0.0.1(在/ etc / hosts中),以获取该域的常规证书。 但是,从安全的角度来看,这种欺诈行为值得怀疑-至少对于公共服务而言, 强烈建议不要采用这种解决方案,因为可能会因MiTM攻击而更改恶意IP地址。 如果我们仅将自己限制在本地计算机上,那么尽管存在一些疑问,但这可能是一个合适的选择。 另外,这种证书可能会被吊销。 在任何情况下,都有一个更简单,更安全的选项(请参阅下文)。

这是mkcert ,这是一个简单的实用程序,用于使用自己的证书颁发机构生成本地信任的证书。 它适用于所有操作系统,无需任何配置。

Linux版本


首先,您需要安装certutil

 sudo apt install libnss3-tools -- sudo yum install nss-tools -- sudo pacman -S nss 

然后

 brew install mkcert 

或从源代码编译:

 go get -u github.com/FiloSottile/mkcert $(go env GOPATH)/bin/mkcert 

MacOS版本


 brew install mkcert brew install nss # if you use Firefox 

Windows版本


在Windows下,您可以下载收集的二进制文件或使用以下程序包管理器之一:Chocolatey或Scoop。

 choco install mkcert -- scoop install mkcert 

本地证书颁发机构的存在是mkcert和openssl证书与自签名证书之间最重要的根本区别,因为当您运行这样的CA时,本地不会发生信任错误。

原则上,您可以使用其他方法来启动和配置自己的CA,但这需要非凡的知识和技能。 一切都在这里完成,无需任何其他键和设置。 只需安装程序-它会自动创建本地证书颁发机构,并将其输入到系统的受信任存储区和Firefox受信任存储区中。

 $ mkcert -install Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" The local CA is now installed in the system trust store! ️ The local CA is now installed in the Firefox trust store (requires restart)! 

Source: https://habr.com/ru/post/zh-CN435476/


All Articles