『壹』 公司有一WEB伺服器,要求客戶端證書訪問 怎麼設置
IIS里右鍵站點屬性,然後選擇目錄安全性選項卡,最下面那個就是證書服務,但是你必須有證書伺服器,才能用,因為證書伺服器需要頒發證書,證書伺服器你可以自己裝下。
『貳』 nginx伺服器怎麼配置瀏覽器訪問需要證書
一直在用Nginx做反向代理,但是其SSL的配置只用過普通的服務端單向證書。在Google,網路狂搜一通之後,一無所獲,依舊是那老三樣,只有單向認證的示例。瀏覽器端雙向認證的配置好像從沒人寫過。
因為要來回的設置所有直接使用域名操作比如:
chaodiquan.com 解析到 IP上面(IP要用你自己的,如果使用CDN另算)
這個是主要在最後的實際應用的測試的使用會用到
因為是自己實際應用,只好從OpenSSL的客戶端證書開始學起,一點一點啃,大段大段的E文讓我這半瓶子醋看的頭暈眼暈。
的提示下終於把這個證書搞定,來秀一個。
這需要一下幾個步驟:
1) 安裝openssl用來做證書認證
2) 創建一個CA根證書
3) 創建一個自簽名的伺服器證書
4) 設置Nginx
5) 創建客戶端證書
6) 安裝客戶端證書到瀏覽器
7) Profit.
1)
這一步我是在ubuntu下直接apt-get裝的openssl, 配置文件安裝在/etc/ssl/openssl.cnf
修改openssl.cnf的以下幾段
[ ca ]
default_ca = foo
Openssl將會尋找名稱為foo的配置段
[ foo ]
dir = /etc/ssl/private
database = $dir/index.txt
serial = $dir/serial
private_key = $dir/ca.key
certificate = $dir/ca.crt
default_days = 3650
default_md = md5
new_certs_dir = $dir
policy = policy_match
policy_match 我保持默認值沒有改
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = match
commonName = supplied
emailAddress = optional
默認簽發有效期為10年,你可以自己設置一個合適的值
2)
創建一個新的CA根證書
下面的幾個腳本我都放在/etc/ssl目錄下
new_ca.sh:
#!/bin/sh
# Generate the key. genrsa意思是生成一個私鑰
openssl genrsa -out private/ca.key
# Generate a certificate request. req表示生成證書,還能生成ca證書,-new表示產生一個新csr,需要輸入一些信息,-key表示私鑰,
openssl req -new -key private/ca.key -out private/ca.csr
#
Self signing key is bad... this could work with a third party signed
key... registeryfly has them on for $16 but I'm too cheap lazy to get
one on a lark.
# I'm also not 100% sure if any old certificate will
work or if you have to buy a special one that you can sign with. I could
investigate further but since this
# service will never see the light of an unencrypted Internet see the cheap and lazy remark.
# So self sign our root key.
x509是一個證書生成工具,顯示證書內容,轉換格式,給CSR簽名等
-signkey用來處理CSR和給證書簽名,就像CA。使用時得同時提供私鑰,把輸入文件變成自簽名的證書,如果輸入CSR文件,則生成自簽名文件
-days證書有效時間
-in輸入文件 -out輸出文件
openssl x509 -req -days 3650 -in private/ca.csr -signkey private/ca.key -out private/ca.crt
#
Setup the first serial number for our keys... can be any 4 digit hex
string... not sure if there are broader bounds but everything I've seen
uses 4 digits.
echo FACE > private/serial
# Create the CA's key database.
touch private/index.txt
# Create a Certificate Revocation list for removing 'user certificates.'
gencrl在index文件中生成一個CRL相關的信息
-crldays是crl過期的時間
openssl ca -gencrl -out /etc/ssl/private/ca.crl -crldays 7
執行 sh new_ca.sh 生成新的CA證書
3)
生成伺服器證書的腳本
new_server.sh:
#
Create us a key. Don't bother putting a password on it since you will
need it to start apache. If you have a better work around I'd love to
hear it.
openssl genrsa -out private/server.key
# Take our key and create a Certificate Signing Request for it.
openssl req -new -key private/server.key -out private/server.csr
# Sign this bastard key with our bastard CA key.
-cert CA本身的證書名
-keyfile CA本身的私鑰
這句就是相當於CA用他的證書和私鑰,根據伺服器的證書,來給出一個CA認證的證書
openssl ca -in private/server.csr -cert private/ca.crt -keyfile private/ca.key -out private/server.crt
執行 sh new_server.sh 生成新伺服器的證書
4)
最要命的一步,嘗試多次後終於搞明白。
配置 nginx 的ssl支持
我的配置如下:
# HTTPS server
#
server {
listen 443;
server_name localhost;
# 打開ssl
ssl on;
# 上一步生成的伺服器證書
ssl_certificate /etc/ssl/private/server.crt;
# 伺服器證書公鑰
ssl_certificate_key /etc/ssl/private/server.key;
# 客戶端證書簽名 也就是第二步生成的CA簽名證書
ssl_client_certificate /etc/ssl/private/ca.crt;
# ssl session 超時
ssl_session_timeout 5m;
# 打開SSL客戶端校驗 (雙向證書檢測)
ssl_verify_client on;
#ssl_protocols SSLv2 SSLv3 TLSv1;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root /var/www/nginx-default;
index index.html index.htm;
}
啟動你的nginx ,等待客戶連接
5)
現在來生成客戶端證書
new_user.sh:
#!/bin/sh
# The base of where our SSL stuff lives.
base="/etc/ssl/private"
# Were we would like to store keys... in this case we take the username given to us and store everything there.
mkdir -p $base/users/$1/
# Let's create us a key for this user... yeah not sure why people want to use DES3 but at least let's make us a nice big key.
生成用戶私鑰
openssl genrsa -des3 -out $base/users/$1/$1.key 1024
# Create a Certificate Signing Request for said key.
根據用戶私鑰生成他的證書
openssl req -new -key $base/users/$1/$1.key -out $base/users/$1/$1.csr
# Sign the key with our CA's key and cert and create the user's certificate out of it.
模擬CA來給出CA認證過的證書
openssl ca -in $base/users/$1/$1.csr -cert $base/ca.crt -keyfile $base/ca.key -out $base/users/$1/$1.crt
# This is the tricky bit... convert the certificate into a form that most browsers will understand PKCS12 to be specific.
#
The export password is the password used for the browser to extract the
bits it needs and insert the key into the user's keychain.
# Take the same precaution with the export password that would take with any other password based authentication scheme.
pkcs12 處理pkcs12文件
根據CA認證過的證書和用戶的私鑰來生成p12驗證證書,可用伺服器導入。
openssl pkcs12 -export -clcerts -in $base/users/$1/$1.crt -inkey $base/users/$1/$1.key -out $base/users/$1/$1.p12
執行 sh new_user.sh yourname 來生成一個 yourname 的client證書
按照提示一步一步來,這里要注意的是客戶證書的幾個項目要和根證書匹配
也就是第一步時配置的:
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = match
不一致的話無法生成最後的客戶證書
6)
發送上一步生成的 yourname.p12 到客戶端。
IE下雙擊安裝就可以導入。
FireFox安裝 :
Go into preferences.
Advanced.
View Certificates.
Import.
Enter master password for FireFox (if you don't have one set one here otherwise stolen laptop = easy access).
Enter in the export password given to you by the de who created your cert.
Hit OK like a mad man.
打開第一步進行設置的域名解析會彈出對話框來要求你選擇使用哪個證書,選擇剛才安裝的證書。選擇接受伺服器證書。現在你可以正常訪問伺服器拉。如果沒弄對的話就會出現400 Bad request certification的錯誤
7)沒啥拉,有問題多試幾次,其實都是很簡單的事。就是中文的資料太少了。
希望可以幫助到你哈
『叄』 https怎麼獲得證書,網站https訪問證明弄
要想將網站升級成https站點,必須申請並且安裝SSL證書。具體的申請步驟如下:
第一步:將CSR提交到代理商
CSR(Certificate Signing Request)文件必須由用戶自己生成,也可以利用在線CSR生成工具。選擇要申請的產品,提交一個新的訂單,並將製作好的CSR文件提交。
第二步 資料提交到CA
當收到您的訂單和CSR後,如果是域名驗證型證書(DV SSL證書),在域名驗證之後10分鍾左右就可頒發證書,若是其他類型證書則是需要通過CA機構進行驗證之後才可頒發。
第三步 發送驗證郵件到管理員郵箱
權威CA機構獲得資料後,將發送一封確認信到管理員郵箱,信中將包含一個 對應的鏈接過去。每一個訂單,都有一個唯一的PIN以做驗證用。
第四步 郵件驗證
點擊確認信中的鏈接,可以訪問到CA機構驗證網站,在驗證網站,可以看到該訂單的申請資料,然後點擊」I Approve」完成郵件驗證。
第五步 頒發證書
在用戶完成郵件驗證之後,CA機構會將證書通過郵件方式發送到申請人自己的郵箱,當用戶收到證書後直接安裝就可以了。若安裝存在問題,我們是提供免費證書安裝服務的。
『肆』 如何讓自己的網站也能實現https訪問
網站實現https加密訪問,你需要到CA機構為網站域名申請SSL證書,然後將SSL證書部署至網站的伺服器端即可實現https加密訪問。詳細教程參考:https://www.wosign.com/news/seozac-https.htm