1. 程式人生 > >HTTPS_SSL apache認證、配置的、步驟以及原理說明

HTTPS_SSL apache認證、配置的、步驟以及原理說明

路徑 sch cat 沒有 單向 區別 apache oca reads

一 、1.單向認證,就是傳輸的數據加密過了,但是不會校驗客戶端的來源

  2.雙向認證,如果客戶端瀏覽器沒有導入客戶端證書,是訪問不了web系統的,找不到地址,想要用系統的人沒有證書就訪問不了系統HTTPS概念

二、1.單向認證,就是傳輸數據加密過,但是不會教研客戶來源

  2.雙向認證,如果客戶端瀏覽器沒有導入客戶端證書,是訪問不了web系統的,找不到地址,想要用系統的人沒有證書是訪問不了https的

    2.1https概念,是以安全為目標的http通道,就是安全版的http,就是http加入ssl安全認證,https的基礎就是ssl所以加密詳細內容就需要ssl

三、https和http的區別

  1.https協議需要到ca申請證書,一遍免費證書很少,需要繳費

  2.http時超文本協議,信息的傳輸通常都是明文,而https是經過ssl加密後再進行傳輸

  3.http和https使用的是完全不同的連接方式,用得默認端口都不一樣,http默認端口:80,而https默認端口為432

  4.http的連接很簡單,是無狀態的,而https協議是由ssl+http協議構建的可進行加密、傳輸身份認證的網絡協議,比http協議安全

四、https的作用

  1.主要作用分為倆種

    1.1建立信息安全通道,保證數據傳輸的安全

    1.2確認網站的安全性

  2.一般意義上的https就是服務有一個證書,主要目的是保證服務的器就是他聲稱的服務器,意思就是服務端和客戶端通信都是ssl加密的。

  3.客戶端證書其實就是通信時,不止驗證你的用戶名密碼,還要驗證你的ca證書

五、HTTPS_SSL配置的步驟:

  1. 驗證是否已創建過同名的證書

    keytool -list -v -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

   2.刪除已創建的證書

    keytool -delete -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

  3.創建證書

    3.1服務器中生成證書:

    (註:生成證書時,CN要和服務器的域名相同,如果在本地測試,則使用localhost)

    keytool -genkey -alias tomcat -keyalg RSA -keystore d:/mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit

    keytool 是JDK提供的證書生成工具,所有參數的用法參見keytool –help

      -genkey 創建新證書

      -v詳細信息

      -alias以”mykey”作為該證書的別名。這裏可以根據需要修改

      -keyalgRSA 指定算法

      -keysize 指定算法加密後密鑰長度

      -keystorec:\sdust.keystore保存路徑及文件名

      -validity3650證書有效期,單位為天

      CN=你的ip,OU=cn,O=cn,L=cn,ST=cn,c=cn 基本信息的配置

      CN=你的ip 這個配置務必註意

      -storepass 123456789 -keypass 123456789 密碼設置

    3.2導出證書,由客戶端安裝:

    keytool -export -alias tomcat -keystore d:/mykeystore -file d:/mycerts.cer -storepass changeit

    3.3客戶端配置:為客戶端的JVM導入密鑰(將服務器下發的證書導入到JVM中)

    keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file d:/mycerts.cer -storepass changeit

  4.配置Tomcat SSL

    修改server.xml中的SSL服務

    <Connector port="8443" maxHttpHeaderSize="8192"
     maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
     enableLookups="false" disableUploadTimeout="true"
     acceptCount="100" scheme="https" secure="true"
     clientAuth="false" sslProtocol="TLS" keystoreFile="server.keystore" keystorePass="changeit"/>

     屬性說明:clientAuth:設置是否雙向驗證,默認為false,設置為true代表雙向驗證keystoreFile:服務器證書文件路徑keystorePass:服務器證書密碼truststoreFile:用來驗證客戶端證書的根證書,此例中就是服務器證書truststorePass:根證書密碼

  5.常見問題

  1. 未找到可信任的證書

    主要原因為在客戶端未將服務器下發的證書導入到JVM中,可以用

    keytool -list -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

    來查看證書是否真的導入到JVM中。

  1. keytool錯誤:java.io.IOException:keystore was tampered with,or password was incorrect

    原因是在你的home目錄下是否還有.keystore存在。如果存在那麽把他刪除掉,後再執行

    或者刪除"%JAVA_HOME%/jre/lib/security/cacerts 再執行

    建議直接刪掉cacerts再導入

HTTPS_SSL apache認證、配置的、步驟以及原理說明