1. 程式人生 > >Java實現http與https切換

Java實現http與https切換

1.從Http跳轉到Https

新增jar包

1.加入struts2-ssl-plugin.jar這個包,

2.升級Struts2,struts必須是2.1.18版本以上

         1.生成證書

首先用jdk自帶的工具keytool生成一個"伺服器證書"。

C:/Program Files/Java/jre1.5.0_04/bin> keytool -genkey -alias safetomcat -keyalg RSA -keystore c:/leadsec -validity 2000
輸入keystore密碼: leadsec
您的名字與姓氏是什麼?
[Unknown]: 10.50.10.188
您的組織單位名稱是什麼?
[Unknown]: Lenovo
您的組織名稱是什麼?
[Unknown]: Lenovo
您所在的城市或區域名稱是什麼?
[Unknown]: Beijing
您所在的州或省份名稱是什麼?
[Unknown]: Beijing
該單位的兩字母國家程式碼是什麼
[Unknown]: CN
CN=10.50.10.188, OU= Lenovo, O= Lenovo, L=Beijing, ST=Beijing, C=CN
正確嗎?
[否]: y

輸入<safetomcat>的主密碼
(如果和 keystore 密碼相同,按回車):

經過上述操作後,獲得檔案c:/Leadsec
注意:
提示名字和姓氏時,應輸入伺服器的DNS域名或者IP地址,否則,客戶端會彈出警告視窗。"站點不符"
另外,因為是自簽名的證書,客戶端會彈出“非信任的機構頒發”,這時可以點選“繼續”,或者安裝該證書,確認自己的信任。

建立伺服器證書

2.配置Tomcat

找到tomcat的server配置檔案,位置是Tomcat 5.5/conf/server.xml。

修改server.xml檔案中增加類似這樣的語句:

<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"

port="8443" minProcessors="5" maxProcessors="75"

enableLookups="true" disableUploadTimeout="true"

acceptCount="100" debug="0" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS" keystoreFile="C:/leadsec" keystorePass="leadsec" />

              注意:

                     埠可以自行設定,但不能和已有的設定衝突。一般預設為8443。

                     keystoreFile和keystorePass必須與上一步建立的證書一致。

3.配置web.xml配置檔案,位置是Tomcat 5.5/conf/web.xml

在</welcome-file-list> 新增如下配置資訊

<security-constraint>

        <web-resource-collection>

              <web-resource-name >SSL</web-resource-name>

                <url-pattern>/user/login.do</url-pattern>

        </web-resource-collection>

       <user-data-constraint>

           <transport-guarantee>CONFIDENTIAL</transport-guarantee>

        </user-data-constraint>

</security-constraint>

struts.xml配置及程式碼設定

  1. 在struts.xml中設定:

    <constant name="struts2.sslplugin.httpPort" value="8080"/>

    <constant name="struts2.sslplugin.httpsPort" value="8443"/>

<constant name="struts2.sslplugin.annotations" value="true"/>

<package name="default" namespace="/" extends="ssl-default,json-default">(注:不要新增ssl自帶的攔截器,否則無法獲取request的資訊(cookie,引數))

…..

 2. 之後在你要某個SSL的方法前,用註釋,就行了:

@Secured

    public String login() throws Exception {

        return SUCCESS;

}

如果要整個類都要SSL,則 
@Secured

public class UserAction extends ActionSupport implements ServletRequestAware,    ServletResponseAware {

2.從Https跳轉到Http

         此處使用重定向進行跳轉,具體配置如下

  1. 在類中新增屬性

//重定向url

private String redirectUrl;

//Tomcat配置的http埠號

private static final String  HTTP_PORT="http.port";

然後再對應的方法末尾新增如下程式碼

         redirectUrl="http://"+request.getServerName()+":"+ConfigUtils.getValue(HTTP_PORT)+request.getContextPath()+"/common/bizNav.do";

其中HTTP_PORT在環境檔案中配置http.port=8080,此埠號為tomcat中http的埠號(tomcat/conf/server.xml)

  1. xml檔案配置

由於使用重定向進行跳轉,所以使用外部注入的方式,在action配置檔案中配置如下

            <action name="userLogin" class="UserAction" method="userLoginForStruts">

             <result name="success" type="redirect">${redirectUrl} </result>

     </action>

相關推薦

Java實現httphttps切換

1.從Http跳轉到Https 新增jar包 1.加入struts2-ssl-plugin.jar這個包, 2.升級Struts2,struts必須是2.1.18版本以上          1.生成證書 首先用jdk自帶的工具keytool生成一個"伺服器證書"。 C:/Program Files/J

Java Socket 實現HTTPHTTPS協議傳送POST/GET請求

JAVA Socket 實現HTTP與HTTPS客戶端傳送POST與GET方式請求         哇,一看標題怎麼這麼長啊,其實意思很簡單,哥討厭用HTTP Client做POST與GET提交覺得那個畢竟是別人寫得AP

【網路】JAVA Socket 實現HTTPHTTPS客戶端傳送POSTGET方式請求

JAVA Socket 實現HTTP與HTTPS客戶端傳送POST與GET方式請求 哇,一看標題怎麼這麼長啊,其實意思很簡單,哥討厭用HTTP Client做POST與GET提交 覺得那個畢竟是別人寫得API庫,所以我就自己實現了一個簡單的HTTP客戶端,支援POST 方

curl實現httphttps請求的方法

每次要使用curl的時候,總要查一堆資料。 現在將常用的幾句儲存下來,省的每次都去谷歌。 常規curl請求: $url = '//www.jb51.net'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_s

HttpClient4.5實現httphttps請求,解決之前方法過時問題

前言最近專案正在籌備上線,發現 HttpClient 中的很多類和方法都已經過時了,雖然並不影響功能的實現,但是看著確實讓人捉急,所以,索性抽了點時間把它給改了。今天就來分享一下。。。之前的程式碼先看看之前的程式碼吧:以下是之前的過時程式碼(部分,完整程式碼在文章末會貼出gi

java實現HTTP的post請求 key-value格式json格式的區別

之前寫過介面接收json格式的post請求,當時自己寫完以為可以適應各種報文的傳送,最近對方說要有個”content=傳送內容”,這不就是最簡單的post請求嗎,那直接用我之前寫的http://blog.csdn.net/do_finsh/article/det

java實現 HTTP/HTTPS請求繞過證書檢測程式碼實現

1、開發需求 需要實現在服務端發起HTTP/HTTPS請求,訪問其他程式資源。 2、URLConnection和HTTPClient的比較 HttpClient是個很不錯的開源框架,封裝了訪問http的請求頭,引數,內容體,響應等等, De

HTTPHTTPS有什麽區別?

soc 數據 tps 安全 sockets 傳輸協議 證書 設計 ets HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,為了保證這些隱私數據能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用

HTTPHTTPS的區別

src mage 聯網 詳細 我們 tps 身份認證 客戶端請求 電子 面試經常被問到這個問題,特意整理了下 一、HTTP和HTTPS的基本概念   HTTP:是互聯網上應用最為廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文

java 實現HTTP連接(HTTPClient)

ons urlencode arraylist col response str exec utils default   在實習中,使用到了http連接,一直理解的很模糊,特地寫個分析整理篇。分析不到位的地方請多多指教。   Http 目前通用版本為 http 1.1 。

面試題:HTTPHTTPS

模型 開頭 tro 工作 ron 傳輸層 進行 證書 str 記錄個面試題 HTTP與HTTPS的不同 1.HTTP的URL為http://開頭,HTTPS的URL為https://開頭 2.HTTP標準端口80,HTTPS標準端口是443 3.在OSI網絡模型中,HTTP

nginx http https 配置

nginx http https 配置域名:qps.ribuncdn.cnnginx http 配置(80端口),請求proxy 到2臺serverlog_format qps_access ‘ $remote_addr $time_iso8601 $server_port $request

HTTPHTTPS簡介

html http https cookie cookie sessionHTTP協議(HyperText Transfer Protocal): 即超文本傳輸協議,是一種發布和接收HTML頁面的方法.HTTPS協議(HyperText Transfer Protocal over Secure Soc

Apache mod_rewrite實現HTTPHTTPS重定向跳轉

告訴 ace mod iter bing space tac lai contain 當你的站點使用了HTTPS之後,你可能會想把所有的HTTP請求(即端口80的請求),全部都重定向至HTTPS(即端口443)。這時候你可以用以下的方式來做到:(Apache mod_rew

HTTPHTTPS

安全 成功 response 引用 服務端 資源 soc targe 兩種 HTTP和HTTPS HTTP協議(HyperText Transfer Protocol,超文本傳輸協議):是一種發布和接收 HTML頁面的方法。 HTTP的端口號為80 HTTPS(Hype

HTTPHTTPS要點詳解

http qa OSI(Open System Interconnect)開放式系統互聯模型 OSI參考模型:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層 應用層:應用層為應用程序提供訪問網絡服務的接口,為用戶直接提供各種網絡服務。常見應用層的網絡服務協議有:HTTP,HTTPS,FT

JAVA 實現XMLJSON 相互轉換

tst throws light getc con parent urn In 工作 原文地址https://blog.csdn.net/congcong68/article/details/39029907 在工作中,經常碰到XML轉為JSON或者JSON轉為XML,在這

JAVA實現HTTP請求的方法

config auth AMM connect www 超時 port encoding n) 目前JAVA實現HTTP請求的方法用的最多的有兩種: 第一種是java原生HttpURLConnectionimport java.io.BufferedReader; i

淺談HTTPHTTPS

信用 都是 什麽 攻擊 網上 發送 數據 bsp 之間   超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因

http https

comm define 網站服務 state rec 一定的 免費 求和 oda 1. http: http 是一個超文本傳輸協議, 是客戶端和服務器端的的請求和應答的標準, 應用www服務上面傳輸超文本到本地瀏覽器的傳輸協議 用於web