修改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目錄下創(chuàng)建兩個初始文件:
# 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服務器上執(zhí)行:
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
上面簽發(fā)過程其實默認使用了-cert cacert.pem -keyfile cakey.pem,這兩個文件就是前兩步生成的位于/etc/pki/CA下的根密鑰和根證書。將生成的crt證書發(fā)回nginx服務器使用。
到此我們已經擁有了建立ssl安全連接所需要的所有文件,并且服務器的crt和key都位于配置的目錄下,剩下的是如何使用證書的問題。
因為這是個人生成的證書,瀏覽器第一次可能會報錯,只要添加信任之后就可以正常使用了!

點個贊唄!