使用mkcert工具一键生成SSL证书

一、mkcert介绍

一句话介绍mkcert一个生成本地 HTTPS 加密证书的工具,一个命令就可以生成证书,不需要任何配置,支持Windows、macOS和Linux平台。

项目信息

# github地址
https://github.com/FiloSottile/mkcert

功能特性

功能特性就一点:一个命令就可以生成证书,不需要任何配置。

二、mkcert安装

MacOS

brew install mkcert
brew install nss # if you use Firefox
# 或者
sudo port selfupdate
sudo port install mkcert
sudo port install nss # if you use Firefox

Linux

# 先安装certutil
sudo apt install libnss3-tools
    -or-
sudo yum install nss-tools
    -or-
sudo pacman -S nss
    -or-
sudo zypper install mozilla-nss-tools
# 直接下载可执行文件
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert

Windows

choco install mkcert
# 或者
scoop bucket add extras
scoop install mkcert

三、mkcert使用

 生成证书

# mkcert生成证书
mkcert domain1 [domain2 [...]]       #mkcert后跟域名

我们模拟一个HTTPS访问网站,网站地址为myosm.com

1. 创建网站工作目录

# 创建网站目录
mkdir -p /opt/httpss-nginx/ccert
mkdir -p /opt/https-nginx/etc

2. 创建一个自签证书

cd mkdir -p /opt/https-nginx/cert

mkcert myosm.com

# 将会看到以下信息


The certificate is at "./myosm.com.pem" and the key at "./myosm.com-key.pem" ✅

It will expire on 21 August 2026

3. 准备index.html 文件

vim /opt/https-nginx/index.html

# index.html 内容如下

<!DOCTYPE html>
<html>
<head>
    <title>欢迎页面</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f7f7f7;
            text-align: center;
        }
        #welcome {
            margin: 0 auto;
            width: 400px;
            padding: 20px;
            background-color: #fff;
            border: 1px solid #ddd;
            border-radius: 10px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
        h1 {
            color: #555;
            font-size: 24px;
            margin-bottom: 20px;
        }
        p {
            color: #666;
            font-size: 14px;
            line-height: 1.5;
        }
</style>
</head>
<body>
    <div id="welcome">
        <h1>欢迎来到有趣的开源集市</h1>
        <p>分享有趣的开源产品、技术、市场趋势等内容。</p>
    </div>
</body>
</html>

4. 准备nginx,conf文件

cd /opt/https-nginx/etc

vim nginx.conf

# nginx.conf内容如下

worker_processes  auto;
events {
    worker_connections  1024;
}
http {
    server {
        listen 443 ssl;
        server_name localhost;
        charset utf-8;
        ssl_certificate /etc/nginx/ssl/myosm.com.pem;
        ssl_certificate_key /etc/nginx/ssl/myosm.com-key.pem;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
            charset utf-8;
        }
    }
}

5. 启动应用

# 启动https应用
docker run -d -p 443:443 -v /opt/https-nginx/etc/nginx.conf:/etc/nginx/nginx.conf -v /opt/https-nginx/index.html:/usr/share/nginx/html/index.html -v /opt/https-nginx/cert/:/etc/nginx/ssl/ --name https-nginx nginx:latest

6. 访问页面

        这时我们发现虽然启用了https服务,并且访问也没有问题,但是浏览器会提示连接不安全。这个是因为访问的PC上没有安装好 CA 证书,需要本地访问PC安装CA证书。

7. 安装CA证书


mkcert -instal

The local CA is already installed in the system trust store! 
The local CA is already installed in the Firefox and/or Chrome/Chromium trust store!

# 查看CA目录

mkcert -CAROOT

/root/.local/share/mkcert

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

    

双击 rootCA.crt,根据提示安装证书即可(注意选择受信任的根证书颁发机构)。

9. 访问页面

重启浏览器,重新访问网站,可以看到连接已经变为安全。

四、 总结

          通过 mkcert 可以快速为个人或小型网站、企业内部网站等生成自签名证书。与 OpenSSL 相比,mkcert 的使用更加简单,大大简化了在内网生成SSL证书的复杂性。

可以按照以下步骤使用 keytool 工具生成自签名的 SSL 证书: 1. 打开命令行窗口,并导航到 JDK 的 bin 目录下。 2. 输入以下命令以生成 SSL 证书: ```bash keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -keysize 2048 ``` 其中,`mydomain` 是证书别名,`keystore.jks` 是证书库的名称。 3. 在运行上述命令后,会提示输入一些信息,如下所示: ```bash What is your first and last name? [Unknown]: example.com What is the name of your organizational unit? [Unknown]: IT What is the name of your organization? [Unknown]: Example Corp What is the name of your City or Locality? [Unknown]: Anytown What is the name of your State or Province? [Unknown]: CA What is the two-letter country code for this unit? [Unknown]: US Is CN=example.com, OU=IT, O=Example Corp, L=Anytown, ST=CA, C=US correct? [no]: yes Enter key password for <mydomain> (RETURN if same as keystore password): ``` 按照提示输入相关信息,其中 `CN`(Common Name)应该与您的域名相匹配。 4. 然后,系统会提示输入密钥库密码和密钥密码。这两个密码应该是不同的。如果您希望两个密码相同,可以按回车键跳过第二个密码的设置。 5. 生成证书后,可以使用以下命令查看证书的详细信息: ```bash keytool -list -v -keystore keystore.jks ``` 这将输出证书的详细信息,包括证书别名、证书类型、证书序列号、颁发者、有效期等。 6. 最后,将生成证书用于您的应用程序中。 注意:在生产环境中,应该使用受信任的第三方机构颁发的证书。这些证书可以通过购买或免费获取。自签名的证书仅适用于开发和测试环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值