MHuiG

「看庭前花开花落,望天上云卷云舒」

自建 https 证书

# 自建 https 证书

生成 nginx 的证书与配置 chrome 安全告警的问题

## 安装 openssl

## 生成根证书

    openssl req -x509 -nodes -days 1461 -newkey rsa:2048 -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca

## 生成私钥

    openssl genrsa -out private.key 2048

    openssl req -new -key private.key -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization/CN=xxx.xxx.xxx.xxx" -sha256 -out private.csr

## 解决 Chrome 安全警告

按照上面的流程，需要注意的是，在默认情况下生成的证书一旦选择信任，在 Edge, Firefox 等浏览器都显示为安全，但是 Chrome 仍然会标记为不安全并警告拦截，这是因为 Chrome 需要证书支持扩展 Subject Alternative Name, 因此生成时需要特别指定 SAN 扩展并添加相关参数。
SAN Extension 所需配置文件关键属性：

req_distinguished_name: 一节的内容与上面 -subj 一样都是证书的附加信息
subjectAltName: 是最关键的属性，取值有两种情况，除前缀外值应与上一步 -subj 中指定的 CN 参数值相同：
如果是为某一域名签发证书，则其值可为 DNS:www.example.com 或者使用通配符 DNS:*.example.com；
如果为 IP 地址颁发证书，则应该使用 IP:xxx.xxx.xxx.xxx 的形式。

    [ req ]
    default_bits        = 2048
    distinguished_name  = req_distinguished_name
    req_extensions      = san
    extensions          = san
    [ req_distinguished_name ]
    countryName         = CN
    stateOrProvinceName = MyProvince
    localityName        = MyCity
    organizationName    = MyOrganization
    [SAN]
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = IP:xxx.xxx.xxx.xxx

## 将上述内容放到一个文件中，命名为 private.ext 执行命令，生成证书

    openssl x509 -req -days 1461 -in private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN

nginx 中配置如下:

    server {
        listen       443;
        server_name  localhost;
        ssl                  on;
        ssl_certificate      /alidata/ssl/private.crt;
        ssl_certificate_key  /alidata/ssl/private.key;
    }

## 使用证书

生成的具体域名证书和私钥可在 nginx 中使用，然后再客户端所在电脑导入根证书：

Windows 需要添加根证书至 受信任的根证书颁发机构
macOS 将其导入 钥匙串访问 并选择信任
另外 Windows 快捷安装根证书脚本如下 (需要管理员权限)：

    certutil -addstore -f -enterprise -user root ".\CA-certificate.crt"

在 window 或者 mac 上安装 private.crt 文件后，nginx 上页面或者接口就可以正常访问了。

Frp内网穿透

Frp 内网穿透 Frp 内网穿透 frp 是一个可用于内网穿透的高性能的反向代理应用，支持 tcp, udp 协议，为 http 和 https 应用协议提供了额外的能力，且尝试性支...

定时备份服务器/网站数据到Github私人仓库

定时备份服务器 / 网站数据到 Github 私人仓库 定时备份服务器 / 网站数据到 Github 私人仓库 现在 Github 被微软收购后，私人仓库已经开始免费了，然后就可以拿来...

留言区

Notes
CentOS
本文目录
Are You A Robot?