一、下載OpenSSL程序安裝 到E:\soft\OpenSSL-Win64
二、打開一個CMD控制臺窗口,設(shè)置好openssl.cnf路徑
E:
cd E:\soft\OpenSSL-Win64\bin
set OPENSSL_CONF=E:\soft\OpenSSL-Win64\bin\openssl.cnf
三、在當(dāng)前目錄?E:\soft\OpenSSL-Win64\bin 里創(chuàng)建兩個子目錄
mkdir certs
mkdir private
生成一個隨機數(shù)
openssl rand -out private/.rand 1000
四、生成根證書
根證書是用于證書簽發(fā)的,證書的簽發(fā)機構(gòu)都有自己的根證書。他們的根證書一般已經(jīng)打包到瀏覽器的受信任的根證書目錄里了,我們自己簽發(fā)的需要手工安裝到這個目錄。
4.1?生成根證書私鑰文件(pem文件)
OpenSSL使用PEM(Privacy Enbanced Mail)格式來保存私鑰,生成私鑰的命令如下:
openssl genrsa -aes256 -out private/cakey.pem 1024
這一步會提示輸入密碼,
Enter pass phrase for private/cakey.pem:
請輸入一個容易記憶的密碼,以后產(chǎn)生其它文件時需要輸入。我輸入了:123456
該命令的相關(guān)參數(shù)解釋如下:
?
該命含義如下:
genrsa: 使用RSA算法產(chǎn)生私鑰
-aes256: 使用256位密鑰的AES算法對私鑰進行加密
-out: 輸出文件的路徑
1024: 指定私鑰長度
4.2 生成根證書簽發(fā)申請文件(csr文件)
這一步需要使用上一步生成的私鑰(pem文件),所以你需要記住上一步自己設(shè)置的密碼。
生成證書請求文件(csr文件)的命令如下:
?
openssl req -new -key private/cakey.pem -out private/ca.csr -subj "/C=CN/ST=Shanghai/L=Shanghai/O=Mediasoft/OU=Mediasoft/CN=Mediasoft"
該命令含義如下:
req: 執(zhí)行證書簽發(fā)命令
-new: 新證書簽發(fā)請求
-key: 指定私鑰路徑,這個是上一步產(chǎn)生的key文件
-out: 輸出的csr文件的路徑,這個是即將產(chǎn)生的請求文件,需要用這個文件來產(chǎn)生證書
-subj: 證書相關(guān)的用戶信息(subject的縮寫),
-subj
用于設(shè)置 Subject Name
其中 C 表示 Country or Region
ST 表示 State/Province
L 表示 Locality
O 表示 Organization
OU 表示 Organization Unit
CN 表示 Common Name
4.3 簽發(fā)根證書(cer文件)
用上一步生成的csr,可以自己簽發(fā)根證書:
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey private/cakey.pem -in private/ca.csr -out certs/ca.cer
該命令的相關(guān)參數(shù)如下:
x509: 生成x509格式證書
-req: 輸入csr文件
-days: 證書的有效期(天)
-sha1: 證書摘要采用sha1算法
-extensions: 按照openssl.cnf文件中配置的v3_ca項添加擴展
-signkey: 簽發(fā)證書的私鑰,第一步生成的Key文件
-in: 要輸入的csr文件,上一步生成的csr文件
-out: 輸出的cer證書文件
將在certs目錄里生成的ca.cer根證書文件,根證書文件可以用于再次簽發(fā)server證書,即用于nginx的服務(wù)器端證書,或client證書。?
根證書通常是用于證書簽發(fā)機構(gòu)簽發(fā)證書與分發(fā)到支持的客戶端的,例如分發(fā)到Chrome瀏覽器的安裝程序里,大多數(shù)情況下,你無法讓Google等瀏覽器廠家將你的根證書安裝到它們?yōu)g覽器的證書根目錄 ,但可以自己手工安裝剛才簽發(fā)的根證書。手工安裝步驟:步驟 1-〉2-〉3-〉4如下:
?五、用根證書簽發(fā)server端證書
5.1?生成服務(wù)端證書私鑰
openssl genrsa -aes256 -out private/server.key 1024
openssl rsa -in private/server.key -out certs/server.key
5.2 生成請求文件
openssl req -new -key private/server.key -out private/server.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myo/OU=myou/CN=mycn"
-subj
用于設(shè)置 Subject Name
其中 C 表示 Country or Region
ST 表示 State/Province
L 表示 Locality
O 表示 Organization
OU 表示 Organization Unit
CN 表示 Common Name
5.3?使用根證書簽發(fā)服務(wù)端證書
openssl x509 -req -days 7304 -CA certs/ca.cer -CAkey private/cakey.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.crt
這里有必要解釋一下這幾個參數(shù):
-CA:指定CA證書的路徑,為第四步生成的CA證書
-CAkey: 指定CA證書的私鑰路徑
-CAserial: 指定證書序列號文件的路徑
-CAcreateserial: 表示創(chuàng)建證書序列號文件(即上方提到的serial文件),創(chuàng)建的序列號文件默認名稱為-CA,指定的證書名稱后加上.srl后綴
?在x509指令中,有多種方式可以指定一個將要生成證書的序列號,可以使用set_serial選項來直接指定證書的序列號,也可以使用-CAserial選項來指定一個包含序列號的文件。所謂的序列號是一個包含一個十六進制正整數(shù)的文件,在默認情況下,該文件的名稱為輸入的證書名稱加上.srl后綴,比如輸入的證書文件為ca.cer,那么指令會試圖從ca.srl文件中獲取序列號,可以自己創(chuàng)建一個ca.srl文件,也可以通過-CAcreateserial選項來生成一個序列號文件。
?
六、使用server證書
如果是Nginx,將以上certs目錄里生成的?server.key與server.crt復(fù)制到證書相關(guān)目錄下并進行相關(guān)設(shè)置即可。
server {
listen 443 ssl;
server_name i569.cn;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
...
}
七:瀏覽器打開域名鏈接 顯示不安全???
? ? ?NET::ERR_CERT_COMMON_NAME_INVALID錯誤。
可以使用擴展文件來在證書里嵌入擴展信息,例如DNS信息,IP信息,DNS信息的文件樣本如下(手工生成的一個文件:private/server.dns.ext):
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName
[SubjectAlternativeName]
DNS.1=test.domain.com
??IP擴展信息的樣本如下(手工生成的一個文件:private/server.ip.ext):
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName
[SubjectAlternativeName]
IP.1=172.0.0.1
嵌入DNS信息以支持解決Chrome瀏覽器備用名的命令如下:
openssl x509 -req -days 7304 -CA certs/ca.cer -CAkey private/cakey.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.crt -extfile private/server.dns.ext
?-extfile? ?使用?server.dns.ext (域名訪問)或者?server.ip.ext (ip 直接訪問)文章來源:http://www.zghlxwxcb.cn/news/detail-819761.html
八:linux nginx 配置命令
查看nginx 執(zhí)行文件地址 ps -ef|grep nginx
查看nginx.conf文件地址 locate nginx.conf
測試配置文件 /usr/sbin/nginx -tc /etc/nginx/nginx.conf
啟動nginx /usr/sbin/nginx -c /etc/nginx/nginx.conf
重啟nginx /usr/sbin/nginx -s reload -c /etc/nginx/nginx.conf
停止nginx kill -9 nginxPid
九:參考nginx.conf配置文章來源地址http://www.zghlxwxcb.cn/news/detail-819761.html
include /etc/nginx/myconfig/*.conf;
server {
listen 80;
server_name i569.cn;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 80;
server_name www.i569.cn;
rewrite ^/(.*)$ https://i569.cn/$1 permanent;
}
server {
listen 443;
server_name i569.cn; #填寫綁定證書的域名
ssl on; #1.21.5版本需將該行注釋
ssl_certificate /etc/nginx/myconfig/i569.cn.pem; #或者.crt文件
ssl_certificate_key /etc/nginx/myconfig/i569.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協(xié)議配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:569;
}
}
到了這里,關(guān)于Windows.OpenSSL生成ssl證書配置到nginx的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!