mkcert 使用指南:如何快速创建自签名 SSL 证书

文章首发于个人公号:「阿拉平平」

我们平时在本地开发时,有时会要求通过 HTTPS 请求来访问。一个通用的做法是用 OpenSSL 生成自签证书,然后对 Web 服务进行配置。但 OpenSSL 的命令比较繁琐,参数也比较复杂,用起来不够方便。于是我找到了一个替代方案:mkcert,和大家分享下。

项目介绍

mkcert 是一个用于生成本地自签名 SSL 证书的开源工具,项目基于 Golang 开发,可跨平台使用,不需要配置,支持多域名以及自动信任 CA。

准备工作

我准备模拟一个局域网内访问 Web 服务的场景,因此开始前需要:

  • 服务器:用于提供 Web 服务,安装 nginx 并开启 SSL,系统为 CentOS 7.8。
  • PC 端:一台 Win10 电脑,用于测试访问,与服务器处于同一局域网。

下载安装

首先,根据自己的系统,下载最新的二进制文件,这里我下载的版本为 v1.4.3:

[root@localhost ~]# wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64

为二进制文件添加可执行权限,并移动到 $PATH 中:

[root@localhost ~]# chmod +x mkcert
[root@localhost ~]# mv mkcert /usr/local/bin/

检查 mkcert 的版本:

[root@localhost ~]# mkcert -version
v1.4.3

如果版本显示正常,说明安装无误。接下来,我们看看 mkcert 是如何创建证书的。

使用说明

mkcert 生成证书的命令很简单,格式如下:

mkcert domain1 [domain2 [...]]

多个域名/IP用空格分隔,一个自签名的证书可以这样创建:

[root@localhost ~]# mkcert 192.168.128.134 example.com localhost 127.0.0.1 ::1
Note: the local CA is not installed in the system trust store.
Note: the local CA is not installed in the Firefox and/or Chrome/Chromium trust store.
Run "mkcert -install" for certificates to be trusted automatically 

Created a new certificate valid for the following names
 - "192.168.128.134"
 - "example.com"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./192.168.128.134+4.pem" and the key at "./192.168.128.134+4-key.pem"

It will expire on 7 September 2023

在这个证书中,192.168.128.134 是服务器的内网地址。命令执行后会生成两个文件:192.168.128.134+4-key.pem 和 192.168.128.134+4.pem,前者是私钥,后者是证书。

由于服务器上已经装了 nginx,也配置了 SSL,所以在命令中可以加入 -cert-file 和 -key-file 参数,将文件直接生成到对应的目录里:

[root@localhost ~]# mkcert -cert-file /etc/nginx/ssl/server.crt -key-file /etc/nginx/ssl/server.key 192.168.128.134 example.com localhost 127.0.0.1 ::1

启动 nginx 服务,然后从 PC 端访问 https://192.168.128.134 查看效果:

可以看到,浏览器访问到了页面,但连接是不安全的。而我们在本地开发时,可能会对连接的安全性有要求,那有没有办法建立安全的连接呢?

正如介绍所言,mkcert 支持自动信任 CA,所以只要安装好 CA 证书就能解决这个问题。

回到服务器,执行以下命令将 mkcert 的认证机构安装到服务器上:

[root@localhost ~]# mkcert -install

CA 证书的位置可以通过以下命令查看:

[root@localhost ~]# mkcert -CAROOT
/root/.local/share/mkcert

该目录中有两个文件:rootCA-key.pemrootCA.pem。将 rootCA.pem 复制到 PC 上,并将其后缀改为 .crt

双击 rootCA.crt,根据提示安装证书,步骤如下:

重启浏览器再次访问,可以看到连接已经变为安全:

写在最后

在这篇文章中,我们通过 mkcert 创建了自签名的 SSL 证书,并建立了安全的访问连接。与 OpenSSL 相比,mkcert 的使用更加简单,简化了在内网搭建 HTTPS 环境的复杂性。

References

[1] mkcert: https://github.com/FiloSottile/mkcert

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
创建 SQL Server 自签名 SSL 证书,您可以按照以下步骤操作: 1. 打开 Windows PowerShell,并使用管理员权限运行。 2. 在 PowerShell 中,输入以下命令来创建签名证书: ``` New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "RootCA" ``` 3. 然后,导出自签名证书到一个文件中,以便您可以在其他计算机上使用它: ``` Export-Certificate -Cert Cert:\LocalMachine\My\[Thumbprint] -FilePath "C:\RootCA.cer" ``` 其中,[Thumbprint] 是您在第 2 步中创建的自签名证书的指纹。 4. 接下来,创建用于 SQL Server 的自签名 SSL 证书: ``` New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SQLServer" -Signer Cert:\LocalMachine\My\[Thumbprint] ``` 其中,[Thumbprint] 是您在第 2 步中创建的自签名证书的指纹。 5. 最后,将自签名 SSL 证书绑定到 SQL Server 上的服务器证书: ``` $certificate = Get-ChildItem -Path Cert:\LocalMachine\My\[Thumbprint] $thumbprint = $certificate.Thumbprint $serviceName = "MSSQLSERVER" $service = Get-Service -Name $serviceName $serviceInstanceId = $service.ServiceInstanceId $serviceParametersPath = "HKLM:\SYSTEM\CurrentControlSet\Services\${serviceName}\Parameters" New-Item -Path $serviceParametersPath -Name "Certificate" -Value $thumbprint -Property @{ ServiceInstanceID = $serviceInstanceId Force = $true } ``` 其中,[Thumbprint] 是您在第 4 步中创建的自签名 SSL 证书的指纹。 完成上述步骤后,您就可以在 SQL Server 上使用自签名 SSL 证书了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值