要做一个带https RESTserver 就一定要通过 openssl.exe 来生成证书
openssl语句
set OPENSSL_CONF=c:\OpenSSL-Win32\bin\openssl.cfg
x509证书一般会用到三类文件,key,csr,crt。
Key 是私用密钥,openssl格式,通常是rsa算法。
csr是证书请求文件,用于申请证书。在制作csr文件的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。
crt是CA认证后的证书文件(windows下面的csr,其实是crt),签署人用自己的key给你签署的凭证
*.key:密钥文件,一般是SSL中的私钥;
*.csr:证书请求文件,里面包含公钥和其他信息,通过签名后就可以生成证书;
*.crt, *.cert:证书文件,包含公钥,签名和其他需要认证的信息,比如主机名称(IP)等。
*.pem:里面一般包含私钥和证书的信息。
###生成key
openssl genrsa -des3 -out server.key 2048
//也可以取消上面要求输入的密码
openssl rsa -in server.key -out server.key
###生成csr
openssl req -new -key server.key -out server.csr
需要输入国家,地区,组织,email等信息
最重要的是,有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。
生成的csr文件交给CA签名后形成服务端自己的证书crt
###自己充当CA角色生成crt
####首先需要生成CA角色需要的ca.crt
openssl req -new -x509 -key server.key -out ca.crt -days 3650
####利用上面的ca.crt签名
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
openssl req -new -x509 -key server.key -out server.pem -days 3650
CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.
-CA选项指明用于被签名的csr证书
-CAkey选项指明用于签名的密钥
-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成