平時做自己的web demo基本上都是用http協議進行訪問。
但是正式情況基本上都是https進行訪問,所以掌握https的配置是很關鍵的。
需要准備的材料:
一台可以可以外網訪問的遠程服務器
tomcat 8.5
java環境(自行百度安裝過程和配置環境變量)
web項目war包(可有可無)
第一步:
在遠程服務器上配置好java環境后就是安裝tomcat:
詳情請見(tomcat安裝、配置、使用):https://www.cnblogs.com/longLifeFrog/articles/8612260.html
過程是windows的,但是lunix也大同小異,思路基本一樣,可以自行百度搜索相關安裝過程
第二步:
由於我這台遠程服務器開了2個端口8080和443。
所以這步要完成用tomcat部署2個不同端口的項目。
先將webapps文件夾和conf文件夾下面的Catalina文件夾,copy一份,如下圖所示:
接下來是修改conf/server.xml:
代碼如下:
<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <!--http配置--> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> <Service name="Catalina2"> <Connector port="443" protocol="HTTP/1.1" connectionTimeout="20000" maxThreads="150" redirectPort="8443" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.5\www.xxxx.com.jks" keystorePass="xxxxxx" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina2" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps2" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>
上圖中8080端口是http形式,如果要將其改成https可以參考443端口的配置。
上圖中www.xxxx.com.jks是從權威機構拿到的證書,keystorePass填相應的密碼。
第三步:
copy項目到webapps和webapps2,然后運行startup,訪問。這樣就成功了。
補充:
1、http自動跳轉https的安全配置:
到conf目錄下的web.xml。在 </welcome-file-list>后面, </web-app>之前,也就是倒數第二段里,加上這樣一段:
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <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>
結果如下圖所示:
這步目的是讓非ssl的connector跳轉到ssl的connector去。所以還需要前往server.xml進行配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
redirectPort改成ssl的connector的端口443,重啟tomcat后便會生效。
以上是權威證書的https配置方法。
最后附上使用jdk的keytool工具生成自簽發證書及認證過程(單向和雙向認證都能通):https://www.cnblogs.com/longLifeFrog/p/9069715.html