生成自签 https证书

生成自签 https证书

前言

很多场景需要 https 才能访问,比如:

1、腾讯的 im h5 只有 https 才能访问手机硬件设备

2、ios 发布应用市场只有 https 域名 才能审核通过

下面介绍快速生成自签 https 证书

一、生成 https 证书

对比选择:

如果仅本地测试可以选择通用https 证书,可以用在各种项目中,但是电脑还是会报警告需要额外处理

如果用于服务器长时间建议证书绑定域名,可以减少很多报警

1、生成通用 https证书

  • 新建ssl 目录,cd 到此目录使用OpenSSL 命令生成一个自签名的 SSL 证书和私钥
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

此时会生成两个文件:key.pem、cert.pem

2、生成指定域名 https 证书

  • 新建ssl 目录,cd 到此目录,新建文件 ssl.conf,内容如下
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
x509_extensions = v3_req

[dn]
CN = zhanglei.nasfuns.fun  # 你的域名

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = zhanglei.nasfuns.fun  # 主域名
DNS.2 = *.nasfuns.fun         # 泛子域名(可选)
IP.1 = 192.168.1.100          # 服务器 IP(可选)
DNS.3 = localhost             # 本地测试
  • 运行以下命令生成新证书

注意:最后的域名要是你的

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -config ssl.conf -subj "/CN=zhanglei.nasfuns.fun"

此时会生成两个文件:key.pem、cert.pem

  • 验证证书 SAN 信息
openssl x509 -in cert.pem -noout -text | grep -A1 "Subject Alternative Name"

输出应包含类似内容:

X509v3 Subject Alternative Name:    DNS:zhanglei.nasfuns.fun, DNS:*.nasfuns.fun, IP Address:192.168.1.100, DNS:localhost 

二、前端项目配置https

1、vue 项目配置 https

配置vite.config.ts

import fs from "fs";

export default defineConfig({
  // 。。。此处省略你的逻辑
  server: {
    host: '0.0.0.0', // 允许外部访问
    open: true,
    https: { // 配置 HTTPS
      key: fs.readFileSync(path.resolve(__dirname, 'key.pem')), // 私钥路径
      cert: fs.readFileSync(path.resolve(__dirname, 'cert.pem')), // 证书路径
    },
    // Solve the problem of infinite page refresh after whistle proxy
    hmr: true,
    proxy: {
      '/api': {
        target: 'https://service.trtc.qcloud.com',
        changeOrigin: true,
        rewrite: path => path.replace(/^\/api/, ''),
      },
    },
  },
});

2、React 项目配置 https

搜索createServer 找出以下配置进行替换即可

// http常见写法
var http = require('http');
var server = http.createServer(app);
// 改成 https
var https = require('https');
const fs = require('fs');
// 新增 SSL 配置
const sslOptions = {
    key: fs.readFileSync('./ssl/key.pem'),
    cert: fs.readFileSync('./ssl/cert.pem')
};
var server = https.createServer(sslOptions, app);

三、电脑、浏览器证书信任

1、Mac | 解决证书不受信任问题

此种情况可解决 safari 浏览器打开 https 地址报风险问题

打开钥匙串 -> 系统 -> 证书,然后双击打开证书,选择始终信任。关闭此弹窗触发保存,输入密码即可。

在这里插入图片描述

2、chrome 信任证书

由于 chrome 不是苹果自带的软件,我们需要手动导入 https 证书

打开chrome://settings/certificates

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流星雨在线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值