目前只會使用jdk的keytool來生成證書。本文僅介紹這種方法。
1Windows下:
1.1 生成keystore文件及導出證書
打開控制檯:
運行:
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
按照要求一步步的輸入信息,問你國家/地區代碼的時候,輸入cn。
輸入密碼的時候,這裏使用:changeit
最後一步讓你輸入的時候,直接回車。
具體記錄如下:
C:\Users\Administrator>%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什麼?
[Unknown]: tuhao
您的組織單位名稱是什麼?
[Unknown]: tuhaojia
您的組織名稱是什麼?
[Unknown]: fnic
您所在的城市或區域名稱是什麼?
[Unknown]: didu
您所在的省/市/自治區名稱是什麼?
[Unknown]: didu
該單位的雙字母國家/地區代碼是什麼?
[Unknown]: cn
CN=tuhao, OU=tuhaojia, O=fnic, L=didu, ST=didu, C=cn是否正確?
[否]: y
輸入 <tomcat> 的密鑰口令
(如果和密鑰庫口令相同, 按回車):
這裏你要直接按回車。
完畢後會在當前目錄下,會產生一個:.keystore文件,將它拷貝到tomcat的bin目錄下。
從控制檯進入tomcat的bin目錄,本機環境是:D:\Tomcat7\bin>
導出證書文件:
D:\Tomcat7\bin>keytool -selfcert -alias tomcat -keystore .keystore
輸入密鑰庫口令:(此處爲上面生成證書時輸入的changeit)
D:\Tomcat7\bin>keytool -export -alias tomcat -keystore .keystore -storepass changeit -rfc -file tomcat.cer
存儲在文件 <tomcat.cer> 中的證書
此時會在D:\Tomcat7\bin>下生成tomcat.cer證書文件。將該文件發給使用者,讓他們安裝該證書,並將證書安裝在“受信任的根證書頒發機構”區域中。具體的操作步驟可以參照鐵道部12306.cn網站證書的安裝步驟。它們是一樣一樣一樣的。
1.2 配置tomcat
打開$CATALINA_BASE/conf/server.xml
找到“SSL HTTP/1.1 Connector” 那一塊,取消註釋並將它改成:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="bin/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
請注意,這裏我已經將tomcat的端口改成了80,相應的,https的端口我也改成了443(即默認的https端口)。
修改windows機器的host文件,增加一行(我的機器的ip是192.168.68.75):
192.168.68.75 tuhao
接下來重啓tomcat,用https://tuhao/訪問網站驗證一下就行了。
接下來將演示linux下配置tomcat的https。
2.linux下設置:
2.1生成keystore文件及導出證書
這一步和在windows下操作差不多,只是環境變量的引用方式不一樣,並且,這次我們指定生成的文件存儲的目錄:
[root@localhost ~]# $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/bin/.keystore
輸入keystore密碼:
再次輸入新密碼:
您的名字與姓氏是什麼?
[Unknown]: tuhao.com
您的組織單位名稱是什麼?
[Unknown]: tuhaojia
您的組織名稱是什麼?
[Unknown]: fnic
您所在的城市或區域名稱是什麼?
[Unknown]: didu
您所在的州或省份名稱是什麼?
[Unknown]: didu
該單位的兩字母國家代碼是什麼
[Unknown]: cn
CN=tuhao.com, OU=tuhaojia, O=fnic, L=didu, ST=didu, C=cn 正確嗎?
[否]: y
輸入<tomcat>的主密碼
(如果和 keystore 密碼相同,按回車):
在這裏直接敲回車
[root@localhost ~]# cd /usr/local/tomcat/bin/
[root@localhost bin]# keytool -selfcert -alias tomcat -keystore .keystore
輸入keystore密碼:
[root@localhost bin]# keytool -export -alias tomcat -keystore .keystore -storepass changeit -rfc -file tomcat.cer
保存在文件中的認證 <tomcat.cer>
將 /usr/local/tomcat/bin/tomcat.cer拷貝到本地。
2.2 配置tomcat:
這一步和windows一樣,我就直接把windows的那部分拷貝過來了:
打開$CATALINA_BASE/conf/server.xml
找到“SSL HTTP/1.1 Connector” 那一塊,取消註釋並將它改成:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="bin/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
請注意,這裏我已經將tomcat的端口改成了80,相應的,https的端口我也改成了443(即默認的https端口)。
接下來是要設置防火牆,我試過增加tcp的443端口,允許訪問,但是外面依然無法訪問這臺服務器的https,乾脆我將iptables服務停止掉,這樣就可以了。
驗證是否配置成功:
重啓tomcat,修改windows機器的host文件,增加一行(linux機器的ip是192.168.68.74):
192.168.68.74 tuhao.com
然後安裝tomcat.cer,注意,一定要安裝在“受信任的根證書頒發機構”這個區域裏。
通過瀏覽器訪問:https://tuhao.com/ 就可以看到https被認爲是可信的了。
總結:
生成證書的時候,“您的名字與姓氏是什麼” 一定要注意輸入你的ip、機器名、域名,總之,你希望以後通過https://xx來訪問你的網站的話,此處就要填寫xx。否則,會有證書不受信的提示。