生成自签名证书
-
生成服务端秘钥
$ openssl genrsa -out server.key 1024
-
生成证书请求文件
- 编写配置文件openssl.cnf
$ vi openssl.cnf [req] req_extensions = v3_req distinguished_name = req_distinguished_name [req_distinguished_name] countryName = CN countryName_default = CN stateOrProvinceName = ZheJiang stateOrProvinceName_default = ZJ localityName = HangZhou localityName_default = HZ organizationalUnitName = Swaf organizationalUnitName_default = SF commonName = Swaf Tech Ltd commonName_max = 64 [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = dog.swaf.cn DNS.2 = cat.swaf.cn
- 生成csr文件
$ openssl req -new -key server.key -out server.csr -config openssl.cnf
也可以不使用openssl.conf文件,这样执行以上命令是根据命令行提示输入相关信息即可。不过这里使用了X509 SAN(subjectAltName)扩展,通过alt_names指定多个域名,这样制作的证书可以被多个域名使用,如果只需支持单个域名(可以是通配符,如 *.xxx.com),可以不需要该文件,在命令行提示中的common name中指定域名即可。
-
生成自签名证书
$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt -extensions v3_req -extfile openssl.cnf
这样便生成了可用的服务端证书。将私有sever.key和证书serves.crt安装在服务端(配置在tomcat,nginx等),然后在客户端安装server.crt证书即可。
生成ca签名证书
-
生成ca证书并自签名
$ openssl genrsa -out server.key 1024 //ca秘钥 $ openssl req -new -key ca.key -out ca.csr //根据提示输入ca相关信息 $ openssl x509 -req -in ca.csr -extensions v3_ca -signkey ca.key -out ca.crt //ca自签名证书
-
生成服务端证书并使用ca签名
$ openssl genrsa -out server.key 1024 $ openssl req -new -key server.key -out server.csr -config openssl.cnf //openssl.cnf文件同上 $ openssl x509 -req -days 3650 -extensions v3_req -extfile openssl.cnf -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt //生成ca签名的服务端证书
这样便生成了ca签名的服务端证书。将私有sever.key和证书serves.crt安装在服务端(配置在tomcat,nginx等),然后在客户端安装ca.crt证书即可。