自签名CA生成证书
 1,用Openssl随机生成服务器密钥,和证书申请文件CSR
#mkdir /etc/cert        //建立证书和key的保存目录,路径自己决定;   
#cd /etc/cert   
#openssl genrsa -des3 -out server.key 1024       //生成1024位加密的服务器私钥server.key   
#openssl req -new -key server.key -out server.csr   //制作CSR证书申请文件,需要填写很多信息!   
————制作CSR问题回答过程,红色为输入内容————-   
You are about to be asked to enter information that will be incorporated   
into your certificate request.   
What you are about to enter is what is called a Distinguished Name or a DN.   
There are quite a few fields but you can leave some blank   
For some fields there will be a default value,   
If you enter ’.', the field will be left blank.   
—–   
Country Name (2 letter code) [GB]:CN                  //填写国码CN   
State or Province Name (full name) [Berkshire]:ShangHai       //省份
Locality Name (eg, city) [Newbury]:ShangHai                //城市   
Organization Name (eg, company) [My Company Ltd]:King  //公司组织名称,自己随便填;   
Organizational Unit Name (eg, section) []:IT-Department       //部门名称,可以随便填;   
Common Name (eg, your name or your server’s hostname) []:www.12121.com      //服务器名称,这里注意了,一定要填写你网站的完整域名,因为浏览器会验证证书中的这个服务器名称和访问的服务器URL是否匹配!   
Email Address []:[email protected]        //管理员,负责人邮件地址,可以填写你自己的邮箱;   
Please enter the following ’extra’ attributes   
to be sent with your certificate request      //这里的提示是说如果你想通过第三方权威证书签名机构给你签名这张证书,则需要认真回答下面的问题,我们做自签名,也就是自己给自己压个钢印,所以不需要这么严格了,后面的2个问题就直接回车跳过即可!   
A challenge password []:   
An optional company name []:  
问题回答完毕后,就会生成一个 server.com.csr文件,这个CSR文件的作用就用于提交给RootCA审核并签发证书的,也就是要给到派出所的警察蜀黍审核的材料,所以回答的各项问题一定要正确和仔细,否则他是不会给你压钢印的;
这里我们就不提交派出所了,直接自己给自己压一个假的钢印好了,只要能加密就行,不考虑权威性,接着往下走;
2,自己给自己签发证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out 12121.com.crt  
-days 3650    证书的有效期,自己给自己颁发证书,想有多久有效期,就弄多久,我一下弄了10年的有效期;
-in server110.com.csr 指定CSR文件
-signkey server110.com.key  指定服务器的私钥key文件
-out server110.com.crt  设置生成好的证书文件名
一条命令,自己给自己压钢印的××× server110.com.crt 就诞生了!
注:其实严格来讲,这里生成的只是一张RootCA,并不是严格意义上的服务器证书 ServerCA,真正的ServerCA是需要利用这张RootCA再给服务器签署办法出来的证书才算;不过我们这里只讲如何实现网页的SSL加密,所以就直接使用RootCA了,也是能正常实现加密功能的!

NGINX配置启用HTTPS
key和证书都有了,现在配置Nginx使用这个张证书和KEY对网站进行加密;
https的配置,只需要在nginx的配置文件后面增加一个 server段的配置即可,内容如下:
# HTTPS server   
server {   
    listen                     443;                                //监听端口443   
    server_name          www.12121.com;         
    ssl                         on;                                  //启用SSL加密   
    ssl_certificate         /etc/cert/12121.com.crt;  //服务器证书文件  

    ssl_certificate_key  /etc/cert/server.key;  //服务器私钥key文件  

    ssl_session_timeout  5m;   
    ssl_protocols  SSLv2 SSLv3 TLSv1;                  //支持的SSL加密协议版本   
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;   
    ssl_prefer_server_ciphers   on;   
—————–以下网站内容location部分的配置就和HTTP的部分一样了,可以直接copy过来————
                index index.html index.htm index.php;   
                root  /home/moonfly-root;  

                rewrite ^(.*) https://$server_name$1 permanent;   强制访问80端口跳转443

                location / {   
………
                }   
配置文件修改完毕后,用nginx -t 测试下配置无误,就reload一下nginx服务,检查443端口是否在


2.每次重启需要输入密码

openssl rsa -in server.key -out server.key.unsecure

另外nginx配置

注释掉ssl_certificate_key  /etc/cert/server.key;  这一行并添加下面

ssl_certificate_key /etc/nginx/certs/server.key.unsecure