### 一:

安装相关包

```

yum install openssl openssl-devel -y

```

新建一个存放ssl证书的文件夹

```

mkdir -p /opt/openssl

```

```

vim http.ext

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

extendedKeyUsage = serverAuth, clientAuth

subjectAltName=@SubjectAlternativeName

[ SubjectAlternativeName ]

IP.1=127.0.0.1

IP.2=192.168.0.135 # 内网访问的IP地址

```

```

openssl req -new -newkey rsa:2048 -sha256 -nodes -out 192.168.0.135.csr -keyout 192.168.0.135.key -subj "/C=CN/ST=SICHUAN/L=SICHUAN/O=Super Inc./OU=Web Security/CN=192.168.0.135"

说明:双引号中的内容依次是国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。

```

```

openssl x509 -req -days 365 -in 192.168.0.135.csr -signkey 192.168.0.135.key -out 192.168.0.135.crt -extfile http.ext

```

![image-1670682369235](https://zmzycc.top/upload/2022/12/image-1670682369235.png)

配置nginx

![image-1670682488814](https://zmzycc.top/upload/2022/12/image-1670682488814.png)

然后再次将 192.168.0.135.crt 下载到 window 导入 chrome 。

![image-1670759139459](https://zmzycc.top/upload/2022/12/image-1670759139459.png)

注意:这里需要重新载入下 nginx,清空下 chrome 的缓存,再次启动。

![image-1670760010266](https://zmzycc.top/upload/2022/12/image-1670760010266.png)

完成!

火狐浏览器也需要修改配置,不然也会报错

![image-1670684823717](https://zmzycc.top/upload/2022/12/image-1670684823717.png)

火狐浏览器处理

Firefox默认情况不,还是不信任自签名证书

打开火狐浏览器输入about:config进行设置界面

![image-1670684883207](https://zmzycc.top/upload/2022/12/image-1670684883207.png)

第二步:

输入security.enterprise_roots.enabled修改为true

![image-1670684935975](https://zmzycc.top/upload/2022/12/image-1670684935975.png)

第三步:

![image-1670684956983](https://zmzycc.top/upload/2022/12/image-1670684956983.png)

完成!

重启浏览器即可

### 二:

可以通过写配置文件来生成ssl证书,这样简单方便。

```

vim req.cnf

# 定义输入用户信息选项的"特征名称"字段名,该扩展字段定义了多项用户信息。

distinguished_name = req_distinguished_name

# 生成自签名证书时要使用的证书扩展项字段名,该扩展字段定义了要加入到证书中的一系列扩展项。

x509_extensions = v3_req

# 如果设为no,那么 req 指令将直接从配置文件中读取证书字段的信息,而不提示用户输入。

prompt = no

[req_distinguished_name]

#国家代码,一般都是CN(大写)

C = CN

#省份

ST = Beijing

#城市

L = Beijing

#企业/单位名称

O = phpkoo

#企业部门

OU = phpkoo

#证书的主域名

CN = phpkoo.com

##### 要加入到证书请求中的一系列扩展项 #####

[v3_req]

keyUsage = critical, digitalSignature, keyAgreement

extendedKeyUsage = serverAuth

subjectAltName = @alt_names

[ alt_names ]

DNS.1=第一个域名

DNS.2=第二个域名

DNS.N=第N个域名

IP.1=第一个IP

IP.2=第二个IP

IP.N=第N个IP

```

执行如下命令即可生成证书

```

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ssl/private.key -out ./ssl/ssl.crt -config ./req.cnf -sha256

```

openssl 命令参数说明:

```

req 大致有3个功能:生成证书请求文件、验证证书请求文件和创建根CA。

-x509 说明生成自签名证书。

-nodes openssl req在自动创建私钥时,将总是加密该私钥文件,并提示输入加密的密码。可以使用”-nodes”选项禁止加密私钥文件。

-days 指定所颁发的证书有效期。

-key 指定输入的密钥,如果不指定此选项会根据 -newkey 选项的参数生成密钥对。

-newkey 指定生成一个新的密钥对,只有在没有 -key 选项的时候才生效,参数形式为rsa:numbits或者dsa:file,例如:rsa:2048 rsa表示创建rsa私钥,2048表示私钥的长度。

-keyout 指定私钥保存位置。

-out 新的证书请求文件位置。

-config 指定req的配置文件,指定后将忽略所有的其他配置文件。如果不指定则默认使用/etc/pki/tls/openssl.cnf中req段落的值。

```