生成SSL自签名证书
-
首先创建SSL证书私钥,期间需要输入两次用户名和密码,生成文件为blog.key;
openssl genrsa -des3 -out blog.key 2048
-
利用私钥生成一个不需要输入密码的密钥文件,生成文件为blog_nopass.key;
openssl rsa -in blog.key -out blog_nopass.key
-
创建SSL证书签名请求文件,生成SSL证书时需要使用到,生成文件为blog.csr;
openssl req -new -key blog.key -out blog.csr
-
在生成过程中,我们需要输入一些信息,需要注意的是Common Name需要和网站域名一致;
Enter pass phrase for blog.key: ----- Country Name (2 letter code) [XX]:CN # 国家代码 State or Province Name (full name) []:jiangsu # 省份 Locality Name (eg, city) [Default City]:jiangsu # 城市 Organization Name (eg, company) [Default Company Ltd]:macrozheng # 机构名称 Organizational Unit Name (eg, section) []:dev # 单位名称 Common Name (eg, your name or your server's hostname) []:blog.macrozheng.com # 网站域名 Email Address []:macrozheng@qq.com # 邮箱 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: # 私钥保护密码,可以不输入直接回车 An optional company name []: # 可选公司名称,可以不输入直接回车
-
生成SSL证书,有效期为365天,生成文件为blog.crt;
openssl x509 -req -days 365 -in blog.csr -signkey blog.key -out blog.crt
- 其实最终有用的文件是两个,一个是证书文件blog.crt,另一个是不需要输入密码的证书私钥文件blog_nopass.key。
Nginx配置
server {
listen 80; # 同时支持HTTP
listen 443 ssl; # 添加HTTPS支持
server_name blog.macrozheng.com;
#SSL配置
ssl_certificate /usr/share/nginx/html/ssl/blog/blog.crt; # 配置证书
ssl_certificate_key /usr/share/nginx/html/ssl/blog/blog_nopass.key; # 配置证书私钥
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 配置SSL协议版本
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 配置SSL加密算法
ssl_prefer_server_ciphers on; # 优先采取服务器算法
ssl_session_cache shared:SSL:10m; # 配置共享会话缓存大小
ssl_session_timeout 10m; # 配置会话超时时间
location / {
root /usr/share/nginx/html/www;
index index.html index.htm;
}
location /admin {
alias /usr/share/nginx/html/admin;
index index.html index.htm;
}
location /app {
alias /usr/share/nginx/html/app;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}