OpenSSL生成SSL证书
前言:
最近遇到一个问题,两个平台之间互相关联,但又不想输入端口那么麻烦,那么最好的方法就是一个使用80端口,一个使用443端口。于是才有了这篇文章。
1. 检查openssl是否已经安装
[root@loaclhost ~]# which openssl
/usr/bin/openssl
2. 接下来就开始生成证书
1) 生成私钥
# genra 生成RSA私钥 # -des3 des3算法 # 2048 私钥长度 [root@loaclhost ~]# openssl genrsa -des3 -out server.pwd.key 2048 Generating RSA private key, 2048 bit long modulus .................................+++ ........................................................................+++ e is 65537 (0x10001) Enter pass phrase for server.pwd.key: Verifying - Enter pass phrase for server.pwd.key:
需要两次输入四位密码,生成一个有密码的私钥server.pwd.key
2) 去除私钥中的密码
[root@loaclhost ~]# openssl rsa -in server.pass.key -out server.key Enter pass phrase for server.pass.key: writing RSA key
生成一个没有密码的私钥server.key
3) 生成CSR(证书签名请求)
# req 生成证书签名请求 # -new 新生成 # -key 私钥文件 # -out 生成的CSR文件 # -subj 生成CSR证书的参数 openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=BeiJing/L=BeiJing/O=dev/OU=dev/CN=xxx.com"
subj参数说明:
1. /C :国家
2. /ST :省
3. /L : 城市
4. /O : 企业
5. /OU : 部门
6. /CN : 域名ip
4) 生成SSL证书
[root@loaclhost ~]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Signature ok subject=/C=CN/ST=BeiJing/L=BeiJing/O=dev/OU=dev/CN=xxx.com Getting Private key
最终只需要三个文件:server.crt, server.csr, server.key
3. nginx运用
server { listen 443 ssl; server_name _; #本机ip client_max_body_size 200m; ssl_certificate cert/server.crt; ssl_certificate_key cert/server.key; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_timeout 5m; ssl_prefer_server_ciphers on; }
毕竟是不安全的证书,忽略即可,当然,为了安全起见,还是申请正版证书较好。