HTTPS_SSL apache認證、配置的、步驟以及原理說明
一 、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配置的步驟:
- 驗證是否已創建過同名的證書
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.常見問題
- 未找到可信任的證書
主要原因為在客戶端未將服務器下發的證書導入到JVM中,可以用
keytool -list -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
來查看證書是否真的導入到JVM中。
- keytool錯誤:java.io.IOException:keystore was tampered with,or password was incorrect
原因是在你的home目錄下是否還有.keystore存在。如果存在那麽把他刪除掉,後再執行
或者刪除"%JAVA_HOME%/jre/lib/security/cacerts 再執行
建議直接刪掉cacerts再導入
HTTPS_SSL apache認證、配置的、步驟以及原理說明