### 一、自签证书

- 生成CA Key证书

```bash
 openssl genrsa 2048 > ca-key.pem
```

- 生成CA Cert证书

```bash
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem -subj=/C=CN/ST=Beijing/L=Beijing/O=ExampleO/OU=ExampleOU/CN=ExampleRootCA/emailAddress=admin@example.com
```

- 生成server证书签发请求和server private key证书;在此命令中修改CN(Common Name)用来创建域名证书请求

```bash
openssl req -newkey rsa:2048 -nodes -days 3650 -keyout server-key.pem -out server-req.pem -subj=/C=CN/ST=Beijing/L=Beijing/O=ExampleO/OU=ExampleOU/CN=*.example.com/emailAddress=admin@example.com
```

- 签发server证书请求,生成server cert证书;注意修改subjectAltName的值

```bash
openssl x509 -req -extfile <(printf "subjectAltName=DNS:*.example.com") -days 3650 -CAcreateserial -in server-req.pem -out server-cert.pem -CA ca-cert.pem -CAkey ca-key.pem
```

### 二、生成证书报错

``` bash
Can't load ./.rnd into RNG 10504:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto\rand\randfile.c:98:Filename=./.rnd
```

- 解决方案

  ```bash
  cd /root(你当前所使用的用户)
  openssl rand -writerand .rnd
  ```

  

### 三、Chrome On MacOS 信任证书

> https://segmentfault.com/a/1190000012394467

- chrome控制台,安全tab,查看证书
- 查看证书详细信息,导出下载证书
- 双击打开下载的证书,选择始终信任