1.生成私钥html
openssl genrsa -des3 -out server.key 2048
会有两次要求输入密码,输入同一个便可linux
而后你就得到了一个server.key文件. 之后使用此文件(经过openssl提供的命令或API)可能常常回要求输入密码,若是想去除输入密码的步骤可使用如下命令:nginx
openssl rsa -in server.key -out server.key
2.建立服务器证书的申请文件server.csr,运行:web
openssl req -new -key server.key -out server.csr
其中Country Name填CN,Common Name填主机名也能够不填,若是不填浏览器会认为不安全.(例如你之后的url为https://abcd/xxxx....这里就能够填abcd),其余的均可以不填.浏览器
3.建立ca证书缓存
openssl req -new -x509 -key server.key -out ca.crt -days 3650
此时,你能够获得一个ca.crt的证书,这个证书用来给本身的证书签名.安全
4.建立自当前日期起有效期为期十年的服务器证书server.crt:服务器
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
5.ls你的文件夹,能够看到一共生成了5个文件:session
ca.crt ca.srl server.crt server.csr server.key
其中,server.crt和server.key就是你的nginx须要的证书文件.url
server { listen 443 ssl; server_name localhost; #为一个server开启ssl支持 ssl on; #为虚拟主机指定pem格式的证书文件 ssl_certificate /home/wangzhengyi/ssl/wangzhengyi.crt; #为虚拟主机指定私钥文件 ssl_certificate_key /home/wangzhengyi/ssl/wangzhengyi_nopass.key; #客户端可以重复使用存储在缓存中的会话参数时间 ssl_session_timeout 5m; #指定使用的ssl协议 ssl_protocols SSLv3 TLSv1; #指定许可的密码描述 ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #SSLv3和TLSv1协议的服务器密码需求优先级高于客户端密码 ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } }
配置完后从新加载配置文件便可
遇到的坑: 配置完nginx后可能遇到SELinux权限问题
解决办法:
1、查看SELinux状态:
sestatus
若是SELinux status参数为enabled即为开启状态
2、关闭SELinux:
一、临时关闭(不用重启机器):
setenforce 0
二、永久关闭.修改配置文件须要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改成SELINUX=disabled
重启机器便可
openssl rsa -in server.key -pubout -out server.pem