標籤:centos7+nginx通過windows ca頒發及配置ssl服務
Centos7+Nginx通過windows CA頒發及配置SSL服務
近期在學習Linux的相關知識,作為一個營運工程師所必備的知識點,一個web服務尤其運行在互連網上的很容易攻擊,所以為了保證安全最起碼的需要對web服務配置SSL,這樣能提高一定的安全性,所以我們今天介紹,Centos7+Nginx通過windows CA頒發及配置SSL服務,當然如果是產生環境的話,一般都會申請第三方認證,比如沃通等第三方憑證授權單位,今天我們主要使用的是內部的windows CA服務為nginx頒發認證,當然也可以使用Nginx的自我簽署憑證,但是那樣每次訪問都會有相關的警告 提醒,具體見下:
環境介紹:
Hostname:DC.IXMSOFT.COM
IP:192.168.5.10
Role:DC、DNS、CA
OS:windows Server 2016
Hostname:D-S.IXMSOFT.COM
IP:192.168.5.20
Role:Nginx Service
OS: Centos 7.1
準備作業系統後及安裝完成對應的配置:
1.hostnamectl set-hostname d-s
2.vim /etc/selinux/config--->selinux:disabled
3.添加防火牆規則:firewall-cmd –zone=public --add-port=”80/tcp” –permenant
接下來就是安裝nginx倉庫
yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
650) this.width=650;" title="clip_image001" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="clip_image001" src="http://s3.51cto.com/wyfs02/M00/8B/84/wKiom1hP-jOhxvpRAADOccggjwI404.png" height="241" />
yum install nginx
650) this.width=650;" title="clip_image001[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image001[4]" src="http://s3.51cto.com/wyfs02/M00/8B/84/wKiom1hP-jWDFhFSAACcTKNIjok866.png" height="221" />
650) this.width=650;" title="clip_image002" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image002" src="http://s3.51cto.com/wyfs02/M00/8B/81/wKioL1hP-jeTRizyAADIBywzVi8979.png" height="306" />
我們同樣給nginx配置一個頁面,主要是為了區分
vim /usr/share/nginx/html/index.html<html><head><title>Welcome to Nginx!</title><style>body {35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body bgcolor="#BE77FF"><h1>Welcome to D-S Nginx Service</h1><h2>HostName:D-S</h2><h2>IP:192.168.5.20</h2></body></html>
然後啟動nginx服務
systemctl start nginx
650) this.width=650;" title="clip_image003" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image003" src="http://s3.51cto.com/wyfs02/M01/8B/81/wKioL1hP-jjgZVv6AABvIfAUjs4228.png" height="297" />
接下來開始申請私密金鑰
cd /etc/pki/tlsOpenssl genrsa -out server.key 2048Server.key 是私密金鑰
650) this.width=650;" title="clip_image004" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image004" src="http://s3.51cto.com/wyfs02/M02/8B/81/wKioL1hP-jnzHPItAADOemqNHXg621.png" height="180" />
用私密金鑰serverkey 檔案產生認證請求檔案csr
openssl req -new -key server.key -out server.csrServer.csr 是認證請求檔案網域名稱,也稱為 Common Name,因為特殊的認證不一定是網域名稱:nginx.ixmsoft.com組織或公司名字(Organization):Example, Ixmsoft部門(Department):可以不填寫,城市(City):Beijing省份(State / Province):Beijing國家(Country):CN加密強度:2048 位,如果你的機器效能強勁,也可以選擇 4096 位如果是泛網域名稱認證,則應該填寫*.ixmsoft.com
650) this.width=650;" title="clip_image005" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image005" src="http://s3.51cto.com/wyfs02/M02/8B/84/wKiom1hP-jzS-QU0AAFmAc1GH5E363.png" height="266" />
650) this.width=650;" title="clip_image006" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image006" src="http://s3.51cto.com/wyfs02/M00/8B/84/wKiom1hP-j3AFDk3AABRYyMe4_s043.png" height="77" />
我們開啟剛才產生的csr檔案
650) this.width=650;" title="clip_image007" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image007" src="http://s3.51cto.com/wyfs02/M00/8B/81/wKioL1hP-j_B-X77AAIrry9qMYk001.png" height="306" />
此時,我們有了csr檔案我們通過這個檔案在內部的windows CA伺服器上申請認證
650) this.width=650;" title="clip_image008" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image008" src="http://s3.51cto.com/wyfs02/M01/8B/84/wKiom1hP-kCDNFodAAEtQzKUU0M690.png" height="482" />
使用base64位編碼的CMC或者RKCS提交認證申請
650) this.width=650;" title="clip_image009" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image009" src="http://s3.51cto.com/wyfs02/M01/8B/81/wKioL1hP-kKiqHMZAADF2LCoL9o945.png" height="484" />
然後我們將csr檔案的內容粘貼,選擇web服務憑證模板提交
650) this.width=650;" title="clip_image010" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="clip_image010" src="http://s3.51cto.com/wyfs02/M02/8B/81/wKioL1hP-kSDdWKtAAEV221XkhQ988.png" height="484" />
一定要下載basic64編碼這個類型,不然在nginx啟動的時候回報錯
650) this.width=650;" title="clip_image011" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image011" src="http://s3.51cto.com/wyfs02/M02/8B/84/wKiom1hP-kWyMRPZAABzujJY6lA028.png" height="417" />
下載認證完成
650) this.width=650;" title="clip_image012" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image012" src="http://s3.51cto.com/wyfs02/M00/8B/84/wKiom1hP-kqjd_wuAAEv_Tw05QE961.png" height="319" />
我們將該認證上傳到192.168.5.20上,nginx伺服器上
650) this.width=650;" title="clip_image013" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="clip_image013" src="http://s3.51cto.com/wyfs02/M00/8B/81/wKioL1hP-kugFS5FAAA9PA5f0Ww134.png" height="60" />
我們將認證拷貝到認證目錄下
cp certnew.cer /etc/pki/tlsls
650) this.width=650;" title="clip_image001[6]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image001[6]" src="http://s3.51cto.com/wyfs02/M01/8B/85/wKiom1hP-k2A_7nEAABtIfEPdgc847.png" height="94" />
我們為了認證統一 配置,再nginx的目錄下建立了一個ssl目錄,專門存放認證檔案
cd /etc/nginxMkdir ssl
650) this.width=650;" title="clip_image002[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image002[4]" src="http://s3.51cto.com/wyfs02/M01/8B/81/wKioL1hP-k7BZ_bOAACBiB8HbEU349.png" height="127" />
然後我們將剛才的那三個檔案拷貝到這個目錄下
cp /etc/pki/tls/server.key server.csr certnew.crt /etc/nginx/ssl/
650) this.width=650;" title="clip_image003[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image003[4]" src="http://s3.51cto.com/wyfs02/M02/8B/85/wKiom1hP-k-A2dviAAB1-wWyrmM320.png" height="117" />
650) this.width=650;" title="clip_image004[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image004[4]" src="http://s3.51cto.com/wyfs02/M00/8B/85/wKiom1hP-lDT1rMrAABD8RHjPF8656.png" height="134" />
我們為了好記名,將申請的認證修改名字及副檔名
mv certnew.cer web.pem
650) this.width=650;" title="clip_image005[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="clip_image005[4]" src="http://s3.51cto.com/wyfs02/M02/8B/85/wKiom1hP-lKiCj6XAABUWj0t2KE074.png" height="146" />
在配置ssl之前,我們先訪問以下,預設是80
650) this.width=650;" title="clip_image006[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image006[4]" src="http://s3.51cto.com/wyfs02/M01/8B/81/wKioL1hP-lOz8lVeAAB4iNWiN0A670.png" height="423" />
650) this.width=650;" title="clip_image007[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image007[4]" src="http://s3.51cto.com/wyfs02/M02/8B/85/wKiom1hP-lXzNh70AAFrh7x7u4M637.png" height="208" />
接下來我們配置ssl,預設的設定檔
vim /etc/nginx/conf.d/default.conf
650) this.width=650;" title="clip_image008[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image008[4]" src="http://s3.51cto.com/wyfs02/M00/8B/81/wKioL1hP-leSM38kAAEh7k4akQQ049.png" height="407" />
我們因為不使用80,所以default.conf用不到,mv default.conf default.conf.bak 重新命名
我們在/etc/nginx/conf.d/下建立一個設定檔
vim nginx-ssl.confserver {listen 443;server_name nginx.ixmsoft.com;ssl on;ssl_certificate /etc/nginx/ssl/web.pem;ssl_certificate_key /etc/nginx/ssl/server.key;access_log logs/ssl_access.log;location / {root /usr/share/nginx/html;}}
我們保證設定檔沒有問題,可以使用以下命令測試
Nginx -t
650) this.width=650;" title="clip_image009[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image009[4]" src="http://s3.51cto.com/wyfs02/M02/8B/81/wKioL1hP-ljz-GKoAAB-ym2GLxw828.png" height="146" />
查看連接埠資訊
650) this.width=650;" title="clip_image010[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;margin:0px;padding-right:0px;" border="0" alt="clip_image010[4]" src="http://s3.51cto.com/wyfs02/M00/8B/81/wKioL1hP-lnQZYErAAFEDmj5JXE683.png" height="199" />
接下來我們嘗試訪問,443可以訪問了,而且認證載入都是對的
650) this.width=650;" title="clip_image011[4]" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="clip_image011[4]" src="http://s3.51cto.com/wyfs02/M01/8B/81/wKioL1hP-luBLAcgAACwTvx0liE583.png" height="371" />
如果想訪問80跳轉到443,那麼我們需要修改剛才的nginx_ssl.conf檔案。
我們需要配置一下
server {listen 80;server_name nginx.ixmsoft.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name nginx.ixmsoft.com;ssl on;ssl_certificate /etc/nginx/ssl/web.pem;ssl_certificate_key /etc/nginx/ssl/server.key;access_log logs/ssl_access.log;location / {root /usr/share/nginx/html;}}
這樣重啟nginx後,使用80訪問後會自動跳轉到443連接埠的https下
本文出自 “高文龍” 部落格,謝絕轉載!
Centos7+Nginx通過windows CA頒發及配置SSL服務