Linux下生成能用的SSL證書的步驟

修改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都位于配置的目錄下,剩下的是如何使用證書的問題。

因為這是個人生成的證書,瀏覽器第一次可能會報錯,只要添加信任之后就可以正常使用了!

點個贊唄!
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容