修改CA的一些配置文件
我们首先要设置openssl
的全局配置文件
在debian下他的配置文件在/usr/lib/ssl/openssl.cnf
需要修改的内容:
具体怎么改可以自己决定
[ CA_default ]
dir = /ssl # Where everything is kept
default_days = 3650 # how long to certify for
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = BeiJing
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = MyCompany Corp
在CA目录下创建两个初始文件:
# touch index.txt serial
# echo 01 > serial
生成根密钥
openssl genrsa -out private/cakey.pem 2048
为了安全起见,修改cakey.pem私钥文件权限为600或400,也可以使用子shell生成( umask 077; openssl genrsa -out private/cakey.pem 2048 ),下面不再重复。
生成根证书
使用req命令生成自签证书:
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
然后会有提示,之后再出现也是这样填,不再重复
Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN
State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音
Locality Name (eg, city) []:BeiJing ← 市的全名,拼音
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不输入
Common Name (eg, YOUR name) []: ← 这里是你要申请的网站的域名
Email Address []:admin@mycompany.com ← 电子邮箱,可随意填
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: ← 可以不输入
An optional company name []: ← 可以不输入
为我们的nginx web服务器生成ssl密钥
以上都是在CA服务器上做的操作,而且只需进行一次,现在转到nginx服务器上执行:
openssl genrsa -out nginx.key 2048
这里测试的时候CA中心与要申请证书的服务器是同一个。
为nginx生成证书签署请求
openssl req -new -key nginx.key -out nginx.csr
私有CA根据请求来签署证书
openssl ca -in nginx.csr -out nginx.crt
另外在极少数情况下,上面的命令生成的证书不能识别,试试下面的命令:
openssl x509 -req -in nginx.csr -CA cacert.pem -CAkey private/cakey.pem -CAcreateserial -out nginx.crt
上面签发过程其实默认使用了-cert cacert.pem -keyfile cakey.pem,这两个文件就是前两步生成的位于/etc/pki/CA下的根密钥和根证书。将生成的crt证书发回nginx服务器使用。
到此我们已经拥有了建立ssl安全连接所需要的所有文件,并且服务器的crt和key都位于配置的目录下,剩下的是如何使用证书的问题。
因为这是个人生成的证书,浏览器第一次可能会报错,只要添加信任之后就可以正常使用了!