https環境搭建配置(基於Tomcat和Nginx)

1、基於Tomcat、JDK內置密鑰工具:nginx


一、生成服務端證書庫(keystore證書庫文件),用於客戶端驗證服務端的真實性 shell

keytool -genkey -v -alias key_server -keyalg RSA -keystore e:\server.keystore -dname "CN=D-F005227,OU=youku,O=zhibohudong,L=beijing,ST=beijing,C=cn" -storepass Aa123 -keypass Aa123 -validity 36000


頒發者信息:瀏覽器

CN : 通常指本站點域名或站長姓名(common name)安全

OU : 組織單位名稱(organization unit)服務器

O : 組織名稱(organization)工具

L : 城市或區域(location)加密

ST : 州或省份(state)spa

C : 兩字母國家代碼(country)code


二、生成客戶端證書(PKCS12文件),用於雙向認證中服務端驗證客戶端請求來源是否合法用戶 server

keytool -genkey -v -alias key_client -keyalg RSA -storetype PKCS12 -keystore e:\client.p12 -dname "CN=D-F005227,OU=youku,O=zhibohudong,L=beijing,ST=beijing,C=cn" -storepass Bb123 -keypass Bb123 -validity 36000


三、讓服務端信任客戶端證書,將客戶端證書導出爲CER文件

keytool -export -alias key_client -keystore e:\client.p12 -storetype PKCS12 -storepass Bb123 -rfc -file e:\client.cer


四、將step 3中導出的客戶端證書(CER文件)導入到step 1中的服務端證書庫中,以完成信任綁定

keytool -import -v -file e:\client.cer -keystore e:\server.keystore -storepass Aa123


五、Tomcat服務器配置,支持https安全鏈接(SSL雙向驗證,clientAuth=true|false|want)

打開TOMCAT_HOME\conf\server.xml,在<Service name="Catalina">下新增:

  <Connector port="4433" protocol="HTTP/1.1" SSLEnabled="true" 
    maxThreads="150" scheme="https" secure="true" clientAuth="true" 
    sslProtocol="TLS" keystoreFile="e:/server.keystore" keystorePass="Aa123" 
    truststoreFile="e:/server.keystore" truststorePass="Aa123"/>

六、讓客戶端導入證書,以便完成雙向認證,正常訪問

call e:/client.p12


七、導出服務端證書,安裝在客戶端(證書存儲位置:授信任的根證書頒發機構),以便創建信任鏈接,保證客戶端不會提示不信任的站點(若是服務端證書是經權威證書機構頒發,則無須執行該步驟)

keytool -export -alias key_server -keystore e:\server.keystore -storepass Aa123 -rfc -file e:\server.cer

call e:/server.cer


八、啓動服務器,訪問驗證

輸入地址:https://d-f005227:4433,可愛的湯姆小貓出現了,且地址欄前面出現一把綠色的鎖,OK,打完收工!



附:在開啓雙向SSL認證(clientAuth=true)時,使用Firefox瀏覽器訪問會提示

這時須要手動按如下步驟導入客戶端證書:

菜單 --> 工具 --> 選項 --> 高級 --> 證書 --> 查看證書 --> 您的證書 --> 導入 --> 選擇client.p12 --> 輸入客戶端證書密鑰 --> 提示導入成功 --> 肯定 --> 刷新頁面 --> over



2、基於Nginx、Linux下OpenSSL密鑰工具


一、進入密鑰、證書文件存放路徑(自定義)

cd /etc/nginx/conf


二、生成2048位長的密鑰,並用des3加密

openssl genrsa -des3 -out server.key 2048


三、用step 2中生成的密鑰來生成服務端證書請求文件

openssl req -new -key server.key -out server.csr

  若是step 2中採用des3加密了,須要輸入step 2設置的密碼


頒發者信息:

  Country Name:兩字母國家代碼

  State or Province Name:州或省份

  Locality Name:城市或區域

  Organization Name:組織名稱

  Organizational Unit Name:組織單位名稱

  Email Address:郵件地址

  A challenge password:爲證書設置密碼

  An optional company name:公司名稱(可不填寫)


四、使用step 2中生成的密鑰和step 3中生成的證書請求文件來生成服務端數字證書文件

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt


五、Nginx配置

  在http範圍內增長以下配置

server {
    listen       80;
    server_name  localhost d-f005227;
    ssl on;
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ssl_verify_client on;    # 開啓客戶端認證
    ssl_client_certificate client.crt;    # 客戶端認證數字證書(生成方式省略)
    location / {
        proxy_pass http://localhost:8080 ;
    }
}
相關文章
相關標籤/搜索