## 证书制作 ## ca证书生成流程(在升级版本的GO中已经不支持读取) 使用-subj参数,指定服务器的相关信息,与之前的不同,此时不需要引导输入。 ```shell openssl req \ -x509 \ -nodes \ -newkey rsa:2048 \ -keyout ca.key \ -out ca.crt \ -days 3650 \ -subj "/C=CN/ST=ZheJiang/L=ZheJiang/O=Global/CN=pro2d Security/OU=IT Department/CN=pro2d" ``` ### SAN证书生成(使用开启扩展SAN的证书) 生成私钥 ```shell $ openssl genpkey -algorithm RSA -out server.key ``` 根据私钥server.key生成证书请求文件server.csr: ```shell openssl req -new -nodes -key server.key -out server.csr -days 3650 \ -subj "/C=CN/OU=IT/O=Global/CN=pro2d/L=ZheJiang" \ -config openssl.cnf -extensions v3_req ``` 验证证书CSR的扩展属性 ```shell $ openssl req -noout -text -in server.csr ``` 生成san证书 ```shell $ openssl x509 -req -days 365 -in server.csr -out server.pem \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -extfile openssl.cnf -extensions v3_req ``` * server.csr是前面步骤生成的证书请求文件。 * ca.crt & ca.key 是CA证书文件和key,用来对server.csr进行签名认证。 查看SAN信息在证书内容 ```shell $ openssl x509 -noout -text -in server.pem ``` 现在证书已经生成完毕, server.pem 和 server.key正式我们需要的证书和密钥 ## 一键生成 ```shell $ openssl req \ -x509 \ -nodes \ -newkey rsa:2048 \ -keyout keys/ca.key \ -out keys/ca.crt \ -days 3650 \ -subj "/C=CN/ST=ZheJiang/L=ZheJiang/O=Global/CN=pro2d Security/OU=IT Department/CN=pro2d" $ openssl genpkey -algorithm RSA -out keys/server.key $ openssl req -new -nodes -key keys/server.key -out keys/server.csr -days 3650 -subj "/C=CN/OU=IT/O=Global/CN=pro2d/L=ZheJiang" -config keys/openssl.cnf -extensions v3_req $ openssl x509 -req -days 365 -in keys/server.csr -out keys/server.pem -CA keys/ca.crt -CAkey keys/ca.key -CAcreateserial -extfile keys/openssl.cnf -extensions v3_req ```