對於 NGINX 的 HTTPS 配置,一般狀況下咱們只須要實現服務端認證就行,由於瀏覽器內置了一些受信任的證書頒發機構(CA),服務器端只須要拿到這些機構頒發的證書並配置好,瀏覽器會本身校驗證書的可用性並經過 SSL 進行通信加密。nginx
但特殊狀況下咱們也須要對客戶端進行驗證,只有受信任的客戶端才能使用服務接口,此時咱們就須要啓用雙向認證來達到這個目的,只有 當客戶端請求帶了可用的證書才能調通服務端接口 。windows
CA 是權威機構才能作的,而且若是該機構達不到安全標準就會被瀏覽器廠商「封殺」,前不久的沃通、StartSSL 就被 Mozilla、Chrome 封殺了。不過這並不影響咱們進行雙向認證配置,由於咱們是自建 CA 的..瀏覽器
爲了方便,咱們就在 NGINX 的目錄下進行證書相關製做:安全
建立相關目錄服務器
#mkdir sslcurl
#cd sslui
製做 CA 私鑰加密
#openssl genrsa -out ca.key 2048url
製做 CA 根證書(公鑰)server
#openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
製做服務端私鑰
#openssl genrsa -out server.pem 1024
#openssl rsa -in server.pem -out server.key
生成簽發請求
#openssl req -new -key server.pem -out server.csr
用 CA 簽發
#openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
和服務端證書製做同樣。
至此須要的證書都弄好了,如今開始配置Nginx。
部分主要配置:
server{
ssl on;
ssl_certificate ssl/server.crt; #server公鑰
ssl_certificate_key ssl/server.key; #server私鑰
ssl_client_certificate ssl/ca.crt; #根級證書公鑰,用於驗證各個二級client
ssl_verify_client on;
}
配置好後就就從新reload nginx。
一、瀏覽器驗證