0. 前期准备工做php
cd ~/ mkdir ssl cd ssl mkdir demoCA cd demoCA mkdir newcerts mkdir privatetouch index.txtecho '01' > serial
1. 制件 CA 证书html
生成 CA 私钥: ca.keynginx
openssl genrsa -des3 -out ca.key 2048
这样是生成 rsa 私钥,`des3` 算法,openssl 格式,2048 位强度。`ca.key` 是密钥文件名。为了生成这样的密钥,须要一个至少四位的密码。另外能够经过如下方法生成没有密码的key:算法
openssl rsa -in ca.key -out ca_decrypted.key
生成 CA 根证书的公钥 ca.crt:浏览器
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
2. 制做网站的 https 证书,并用 CA 签名认证ruby
假设咱们须要为 abc.com 域名制做证书session
先生成 abc.com 的证书私钥 abc.com.pemide
openssl genrsa -des3 -out abc.com.pem 1024
无密码的私钥网站
openssl rsa -in abc.com.pem -out abc.com.key
生成 csr 签名请求加密
openssl req -new -key abc.com.pem -out abc.com.csr
这里须要输入国家,地区,组织,email等。最重要的是 **common name**,能够写你的名字或者域名。若是为了 https 申请,这个必须和域名同样,即,这里要写 abc.com,不然会引起浏览器警报,这里能够用 *.abc.com 来作泛域名证书。
最后,须要用 CA 证书进行签名:
openssl ca -policy policy_anything -days 1460 -cert ./demoCA/ca.crt -keyfile ./demoCA/ca.key -in abc.com.csr -out abc.com.crt
这样网站的 https 证书就作完了。
还有一步就是把 ca.crt 的内容追加到 abc.com.crt 后面,由于有些浏览彷佛不支持。
cat demoCA/ca.crt >> abc.com.crt
加入配置内容:
server { listen 443; server_name abc.com www.abc.com; root html; index index.html index.htm; ssl on; ssl_certificate /PATH/TO/abc.com.crt; ssl_certificate_key /PATH/TO/abc.com.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; location / { try_files $uri $uri/ =404; } }
其实不少时候,并不须要加密的 key,因此像这面这么作就行了。
cd ~/ mkdir ssl cd ssl mkdir demoCA cd demoCA mkdir newcerts mkdir privatetouch index.txt echo '01' > serial openssl genrsa -out ca.key 2048openssl req -new -x509 -days 3650 -key ca.key -out ca.crt cd .. openssl genrsa -out abc.com.key 2048openssl req -new -key abc.com.key -out abc.com.csr openssl ca -policy policy_anything -days 1460 -in abc.com.csr -out abc.com.crt -cert ./demoCA/ca.crt -keyfile ./demoCA/ca.key