keytool生成 和 商業SSL 並配置https
一、SSL證書簡介
要想使用https, 首先,我們需要有SSL證書,證書可以通過兩個渠道獲得:
- 1.自己生成
雖然安全性不是那麼高,但勝在成本低.
目前證書有以下常用檔案格式:JKS(.keystore),微軟(.pfx),PEM(.key + .crt)。其中,tomcat使用JKS格式,nginx使用PEM格式.
- 2.公開可信認證機構
例如CA,但是申請一般是收費的。
二、自己生成
JDK自帶了一個生成證書 keytool ,目錄在 /bin 下面
1、生成證書
輸入:(如果你沒有配環境變數需要cd到bin目錄執行,否則做不到keytool命令)
keytool -genkey -v -alias HaC -keyalg RSA -validity 3650 -keystore ~/cert/HaC.keystore
- alias: 別名 這裡起名HaC
- keyalg: 證書演算法,RSA
- validity:證書有效時間,10年
- keystore:證書生成的目標路徑和檔名,替換成你自己的路徑即可,我定義的是~/Lee/HaC.keystore
然後隨便輸入,但是密碼要記得:
[root@VM-8-8-centos ~]# keytool -genkey -v -alias HaC -keyalg RSA -validity 3650 -keystore ~/cert/HaC.keystore
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: a
What is the name of your organizational unit?
[Unknown]: b
What is the name of your organization?
[Unknown]: c
What is the name of your City or Locality?
[Unknown]: d
What is the name of your State or Province?
[Unknown]: e
What is the two-letter country code for this unit?
[Unknown]: f
Is CN=a, OU=b, O=c, L=d, ST=e, C=f correct?
[no]: y
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 3,650 days
for: CN=a, OU=b, O=c, L=d, ST=e, C=f
Enter key password for <HaC>
(RETURN if same as keystore password):
Re-enter new password:
[Storing /root/cert/HaC.keystore]
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /root/cert/HaC.keystore -destkeystore /root/cert/HaC.keystore -deststoretype pkcs12".
2、其他操作,可以不用理會
匯出證書:
123456是我在上面輸入的密碼。
[root@VM-8-8-centos apache-tomcat-8.0.53]# keytool -exportcert -rfc -alias HaC -file ~/cert/HaC.cer -keystore ~/cert/HaC.keystore -storepass 123456
Certificate stored in file </root/cert/HaC.cer>
匯入到jvm的庫
-storepass changeit
表示預設密碼是 changeit ,changeit 是jvm的預設密碼。不是上面的123456。
keytool -import -v -trustcacerts -alias HaC -file ~/cert/HaC.cer -storepass changeit -keystore /var/www/web/jdk/jdk1.8.0_261/jre/lib/security/cacerts
刪除
keytool -delete -alias testkey -keystore /var/www/web/jdk/jdk1.8.0_261/jre/lib/security/cacerts -storepass changeit
檢視證書
keytool -list -v -alias HaC -keystore /var/www/web/jdk/jdk1.8.0_261/jre/lib/security/cacerts -storepass changeit
3、配置Tomcat
我本地使用的tomcat版本是tomcat-8.0.53
1、修改埠
tomcat的預設https埠是8443,而https的埠是443,那需要把8443改一下,如果不改,你可以通過 https://www.xxx.cn:8443 這樣訪問,但是就怪怪的。
找到tomcat目錄下的conf/server.xml檔案,修改:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
表示80埠跳轉到443埠,即http的請求都轉發到https
這個沒有用到,也改了:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
接著把這段註釋放開:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/root/cert/HaC.keystore" keystorePass="123456"/>
keystoreFile是你的證書路徑,keystorePass的密碼是你之前輸入的密碼。這裡的port改成 port=“443” 。
2、自動跳轉
http的請求都轉發到https
找到tomcat目錄下的conf/web.xml檔案,末尾 加入:
<!-- ====================自動跳轉——start ===================== -->
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- ====================自動跳轉——end ===================== -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
重啟Tomcat,訪問 https://81.71.16.134/ 或者 http://81.71.16.134/
提示證書存在問題。然後點選 繼續瀏覽,就可以使用HTTPS訪問了。
給瀏覽器安裝證書:
瀏覽器 一樣提示 不安全的連線。沒辦法了,瀏覽器無法信任自定義的證書。
三、使用商用證書
商用的SSL實在是太貴了,比如說賽門鐵克、亞信,個人一般都難以承受,let’s encrypt 是一個免費的SSL組織,申請後有3個月的期限,到期可以續杯。
2.1、申請證書
騰訊雲 可以免費申請 1年的免費證書,我這裡使用騰訊云為例子:
申請完畢,點選下載 , 解壓看到這個壓縮包有幾種伺服器的不同型別證書。我們是Tomcat的伺服器,就把Tomcat的jks證書上傳到伺服器。
2.2、tomcat配置https
替換server.xml的jks證書路徑和密碼即可:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/root/cert/www.baimuxym.cn.jks" keystorePass="i24vj6841f1"/>
2.3、設定http自動跳轉到https
把http的請求都轉發到https
找到tomcat目錄下的conf/web.xml檔案,末尾 加入:
<!-- ====================自動跳轉——start ===================== -->
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- ====================自動跳轉——end ===================== -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
然後重啟Tomcat。訪問 https://baimuxym.cn/
現在就不會提示證書不安全了。
四、設定自定義的首頁
上面訪問了域名,跳到了tomcat的首頁,那要跳轉到我們自定義的網站怎麼辦呢?
找到tomcat目錄下的conf/server.xml檔案,在標籤之間新增上:
<Context path="" docBase="/var/www/web/HaCresume/" debug="0" reloadable="true"/>
表示Tomcat的根目錄就是這個了,不再是webapps下面了。
找到tomcat目錄下的conf/web.xml檔案,修改首頁:
<welcome-file-list>
<welcome-file>HaCresume.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
表示我的 首頁 就是 /var/www/web/HaCresume/HaCresume.html 了。
然後重啟Tomcat。訪問https://baimuxym.cn/
現在就不會提示證書不安全了。完美!
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
表示我的 首頁 就是 /var/www/web/HaCresume/HaCresume.html 了。
然後重啟Tomcat。訪問https://baimuxym.cn/[](https://baimuxym.cn/)
現在就不會提示證書不安全了。完美!
![img](https://img-blog.csdnimg.cn/img_convert/395b3e4f05f1f165d845a871d15b058b.png)
相關文章
- Java Keytool 命令使用教程 – HTTPS SSL 教程JavaHTTP
- Keytool配置 Tomcat的HTTPS雙向認證TomcatHTTP
- Nginx的SSL配置優化 – HTTPS SSL 教程Nginx優化HTTP
- nginx docker容器配置https(ssl)NginxDockerHTTP
- HTTPS的SSL證書配置HTTP
- nginx配置ssl加密(單/雙向認證、部分https) – HTTPS SSL 教程Nginx加密HTTP
- SSL證書生成,完成HTTPS驗證HTTP
- Nginx使用SSL模組配置httpsNginxHTTP
- nginx開啟ssl並把http重定向到httpsNginxHTTP
- nginx配置ssl實現https訪問 小白文NginxHTTP
- phpstudy配置本地ssl證照,訪問https://127.0.0.1PHPHTTP127.0.0.1
- 怎麼給網站配置SSL證書(https)網站HTTP
- 詳解如何給Tomcat配置Https/ssl證書TomcatHTTP
- nginx配置SSL證書實現https服務NginxHTTP
- [HTTPS]SSL/TLSHTTPTLS
- 伺服器配置ssl證書支援蘋果ATS方法 – HTTPS SSL 教程伺服器蘋果HTTP
- Vesta 安裝SSL – HTTPS SSL 教程HTTP
- SSL:http與httpsHTTP
- 在Nginx下部署SSL證書並重定向至HTTPS的教程NginxHTTP
- Docker部署Halo部落格並配置SSL證書Docker
- 亞馬遜雲伺服器aws配置ssl https證書亞馬遜伺服器HTTP
- phpStudy安裝ssl證照 – HTTPS SSL 教程PHPHTTP
- Tomcat 安裝SSL證書 – HTTPS SSL 教程TomcatHTTP
- SSL證書轉PEM格式 – HTTPS SSL 教程HTTP
- SSL證書格式轉換 – HTTPS SSL 教程HTTP
- 教你如何給 Discuz! X3.1/3.2 開啟https(SSL)支援! – HTTPS SSL 教程HTTP
- SSL證書安裝指引教程 – HTTPS SSL 教程HTTP
- SSL證書申請問題 – HTTPS SSL 教程HTTP
- 【Using English】28 - Security with HTTPS and SSLHTTP
- HTTPS基礎原理和配置 - 1HTTP
- HTTPS基礎原理和配置-2HTTP
- HTTPS基礎原理和配置-3HTTP
- java keytoolJava
- SSL證書是什麼?HTTP和HTTPS的區別HTTP
- Mac生成多個ssh並配置不同域名Mac
- kafka ssl sasl_ssl 配置Kafka
- https Java SSL Exception protocol_versionHTTPJavaExceptionProtocol
- Nginx+Tomcat Https SSL部署方案NginxTomcatHTTP