nginx配置ssl雙向驗證(後臺登錄限制)

需求:管理後臺登錄限制,只允許在職人員登錄,離職人員無法登錄。

解決方案:nginx配置ssl雙向驗證

環境          :   ubuntu 14.04
openssl位置   :   /etc/ssl/openssl.conf
nginx版本     :   1.8.0
nginx ssl目錄 :   /etc/nginx/admin


-------------------------------------------

1、使用openssl實現證書中心

     (1)編輯證書中心配置文件(/etc/ssl/openssl.conf)

         dir             = /etc/ssl

     (2)創建newcerts 目錄       

  mkdir -p /etc/ssl/newcerts

     (3)創建證書私鑰

  cd /etc/ssl
  ## 寫入初始證書序號,爲4個HEX字符
  echo 12A8 > serial
  ## 生成證書數據庫
  touch index.txt
  ## 生成crlnumber 爲了註銷用戶 ##
  echo 12A8 > crlnumber
  cd /etc/ssl/private
  openssl genrsa -out cakey.pem 2048

     (4)生成自簽證書

  cd /etc/ssl/        
  openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655


2、創建服務器證書

  mkdir -p /etc/nginx/admin
  cd /etc/nginx/admin      
  openssl genrsa -out nginx.key 1024 
  openssl req -new -key nginx.key -out nginx.csr
  openssl ca -in nginx.csr -out nginx.crt -days 3650
  openssl ca -gencrl -crldays 7 -out ca.crl    # 產生crl文件,供吊銷證書使用


3、創建客戶端瀏覽器證書(例如創建用戶:李雷)

  mkdir -p /etc/nginx/admin/user/lilei        #創建李雷證書存放目錄     
  cd /etc/nginx/admin/user/lilei 
  openssl genrsa -out lilei.key 1024
  openssl req -new -key lilei.key -out lilei.csr
  openssl ca -in lilei.csr -out lilei.crt -days 3650
  # 將文本格式的證書轉換成可以導入瀏覽器的證書
  openssl pkcs12 -export -clcerts -in lilei.crt -inkey lilei.key -out lilei.p12


4、配置Nginx服務器驗證

  ssl                  on;
  ssl_certificate         /etc/nginx/admin/nginx.crt;
  ssl_certificate_key     /etc/nginx/admin/nginx.key;
  ssl_client_certificate  /etc/ssl/cacert.pem;
  ssl_session_timeout  5m;
  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;
  ssl_crl /etc/nginx/admin/ca.crl;  #啓用吊銷證書檢查


5、撤銷用戶證書

  cd /etc/ssl/
  grep "lilei" index.txt    類似如下
  V       250817084430Z           12AC    unknown /C=CN/ST=FUJIAN/O=xxx/OU=xxxx/CN=xxxxx/emailAddress=xxxxx
  可得 值爲12AC
  cd  /etc/ssl/newcerts
  openssl ca -revoke 12AC.pem                ##完成註銷

    

     然後查看index.txt  可以看到V變成R

     必須注意的一點是,必須更新此文件,不然撤銷證書後依然能通過驗證。另外我們設置crl文件過期時間爲7天,如果7天后,我們未更新crl文件,nginx服務器將拒絕所有證書匹配。故我們還應開啓crontab,定期更新crl文件

     定時任務腳本如下:

  #!/bin/sh
  NGINX_SSL_PATH=/etc/nginx/admin
  
  cd $NGINX_SSL_PATH
  openssl ca -gencrl -crldays 7 -out ca.crl
  DATE_NOW1=$(/bin/date +%Y-%m-%d\ %H:%M:%S)
  echo "$DATE_NOW1 has success updata" >> /home/cron/updata_cakey.log
  /etc/init.d/nginx reload




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章