IP地址自签名证书
创建CA (证书认证机构)
创建私钥
openssl genrsa -out ca.key 2048
|
genrsa
表示生成一个RSA私钥-out ca.key
指定生成的私钥文件名为 ca.key,并将其输出到当前目录2048
RSA密钥的长度为2048位
创建公钥
openssl req -new -x509 -days 208 -key ca.key -out ca.crt
|
req
表示操作与证书签名请求(CSR)相关的部分-new
生成一个新的证书签名请求(CSR)-x509
生成一个自签名证书,而不是一个证书签名请求(CSR)-days 208
证书的有效期为208天-key ca.key
使用之前生成的私钥文件 ca.key-out ca.crt
指定输出的证书文件名为 ca.crt
配置文件
openssl.cnf
OpenSSL 配置文件,用于生成证书签名请求(Certificate Signing Request,CSR)
[req] # 指定请求中所用的主体部分名称配置段 distinguished_name = req_distinguished_name # 在请求中使用的扩展配置段 req_extensions = v3_req
[req_distinguished_name] # 国家名称字段(2个字母的代码) countryName = Country Name (2 letter code) # 国家名称字段的默认值为美国 countryName_default = US # 州或省名称字段(全名) stateOrProvinceName = State or Province Name (full name) # 州或省名称字段的默认值为纽约州 stateOrProvinceName_default = NY # 城市名称字段 localityName = Locality Name (eg, city) # 城市名称字段的默认值为纽约市 localityName_default = NYC # 组织单位名称字段 organizationalUnitName = Organizational Unit Name (eg, section) # 组织单位名称字段的默认值为 'xxx' organizationalUnitName_default = xxx # 常用名称字段 commonName = xxx # 常用名称字段的最大长度为64个字符 commonName_max = 64
[ v3_req ] # 表示这是一个CA证书,可以用来签发其他证书 basicConstraints = CA:TRUE # 定义密钥的用途,包括不可否认性、数字签名和密钥加密。 keyUsage = nonRepudiation, digitalSignature, keyEncipherment # 指定备用名称字段(例如IP地址),并引用 alt_names 段 subjectAltName = @alt_names
[alt_names] # 备用IP地址1,值为192.168.0.10 IP.1 = 192.168.0.10 # 备用IP地址2,值为x.x.x.x(需要替换为实际IP地址) IP.2 = x.x.x.x
|
v3.ext
OpenSSL 配置文件的一部分,用于定义证书扩展
# 标识颁发该证书的CA的密钥 ## `keyid`:使用CA密钥的标识符 ## `issuer`:使用颁发者的名称和序列号 authorityKeyIdentifier=keyid,issuer
# 定义证书的基本约束:这是一个终端用户证书,而不是CA证书,不能用来签发其他证书 basicConstraints=CA:FALSE
# 定义证书密钥的用途 ## `digitalSignature`:用于验证数字签名 ## `nonRepudiation`:确保签名者无法否认已签名的数据 ## `keyEncipherment`:用于加密密钥数据 ## `dataEncipherment`:用于加密数据 keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
# 定义主题备用名称字段,包含备用名称的信息 ## `@alt_names`:引用配置文件中名为 alt_names 的段落 subjectAltName=@alt_names
[alt_names] # 备用IP地址1,值为192.168.0.10 IP.1 = 192.168.0.10 # 备用IP地址2,值为x.x.x.x(需要替换为实际IP地址) IP.2 = x.x.x.x
|
生成签服务器证书
私钥
openssl genrsa -out server.key 2048
|
公钥
openssl req -new -days 208 -key server.key -out server.csr -config openssl.cnf
|
CA服务器签名
使用CA证书和私钥签署一个证书签名请求(CSR),生成一个新的证书
openssl x509 -days 208 -req -sha256 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
|
-sha256
使用SHA-256哈希算法签名证书-extfile v3.ext
指定包含扩展配置的文件 v3.ext--CAcreateserial
生成并保存一个新的CA序列号文件-in server.csr
指定要签署的证书签名请求(CSR)文件 server.csr-out server.crt
指定输出的签署后的证书文件名为 server.crt-CA ca.crt
使用CA证书 ca.crt 进行签名-CAkey ca.key
使用CA私钥 ca.key 进行签名
部署nginx
server { listen 443 ssl default_server; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key;
location / { proxy_redirect off; proxy_pass http://127.0.0.1:8080; proxy_set_header Host $http_host; } }
|

