當前位置:首頁 » 密碼管理 » 配置https訪問

配置https訪問

發布時間: 2023-07-01 13:48:25

1. https怎麼配置

首先你的申請一個可信的SSL證書,比如沃通OV SSL Pre證書,然後部署到網站的伺服器端即可,具體配置參考下面的配置HTTPS協議指南。

2. 網站怎麼啟用https訪問

密,因此,所傳送的數據不容易被網路黑客截獲和破解。本文介紹HTTPS的三種實現方法

方法一 靜態超鏈接
這是目前網站中使用得較多的方法,也最簡單。在要求使用SSL進行傳輸的Web網頁鏈接
中直接標明使用HTTPS協議,以下是指向需要使用SSL的網頁的超鏈接:
<a href=「https://192.168.100.100/ok/securePage.jsp」>SSL例子</a>
需要說明的是,在網頁里的超鏈接如果使用相對路徑的話,其默認啟用協議與引用該超
鏈接的網頁或資源的傳輸協議相同,例如在某超鏈接「https://192.168.100.100/ok/l
ogin.jps」的網頁中包含如下兩個超鏈接:
<a href=「./bessl/exam.jsp」>SSL鏈接</a>
<a href=「http://192.168.100.100/notssl/index.jsp」>非SSL鏈接
那麼,第一個鏈接使用與「https://192.168.100.100/ok/login.jsp」相同的傳輸協議
HTTPS,第二個鏈接使用本身所標識的協議HTTP。
使用靜態超鏈接的好處是容易實現,不需要額外開發。然而,它卻不容易維護管理; 因
為在一個完全使用HTTP協議訪問的Web應用里,每個資源都存放在該應用特定根目錄下的
各個子目錄里,資源的鏈接路徑都使用相對路徑,這樣做是為了方便應用的遷移並且易
於管理。但假如該應用的某些資源要用到HTTPS協議,引用的鏈接就必須使用完整的路徑
,所以當應用遷移或需要更改URL中所涉及的任何部分如:域名、目錄、文件名等,維護
者都需要對每個超鏈接修改,工作量之大可想而知。再者,如果客戶在瀏覽器地址欄里
手工輸入HTTPS協議的資源,那麼所有敏感機密數據在傳輸中就得不到保護,很容易被黑
客截獲和篡改!
方法二 資源訪問限制
為了保護Web應用中的敏感數據,防止資源的非法訪問和保證傳輸的安全性,java Serv
let 2.2規范定義了安全約束(Security-Constraint)元件,它用於指定一個或多個We
b資源集的安全約束條件;用戶數據約束(User-Data-Constraint)元件是安全約束元件
的子類,它用於指定在客戶端和容器之間傳輸的數據是如何被保護的。用戶數據約束元
件還包括了傳輸保證(Transport-Guarantee)元件,它規定了客戶機和伺服器之間的通
信必須是以下三種模式之一:None、Integral、Confidential。None表示被指定的Web資
源不需要任何傳輸保證;Integral表示客戶機與伺服器之間傳送的數據在傳送過程中不
會被篡改; Confidential表示數據在傳送過程中被加密。大多數情況下,Integral或Co
nfidential是使用SSL實現。
這里以BEA的WebLogic Server 6.1為例介紹其實現方法,WebLogic是一個性能卓越的J2
EE伺服器,它可以對所管理的Web資源,包括EJB、JSP、Servlet應用程序設置訪問控制
條款。假設某個應用建立在Weblogic Server里的/mywebAPP目錄下,其中一部分Servle
ts、JSPs要求使用SSL傳輸,那麼可將它們都放在/mywebAPP/sslsource/目錄里,然後編
輯/secureAPP/Web-INF/web.xml文件,通過對web.xml的設置可達到對Web用戶實現訪問
控制。
當Web用戶試圖通過HTTP訪問/sslsource目錄下的資源時,Weblogic Server就會查找we
b.xml里的訪問約束定義,返回提示信息:Need SSL connection to access this reso
urce。資源訪問限制與靜態超鏈接結合使用,不僅繼承了靜態超鏈接方法的簡單易用性
,而且有效保護了敏感資源數據。然而,這樣就會存在一個問題: 假如Web客戶使用HT
TP協議訪問需要使用SSL的網路資源時看到彈出的提示信息: Need SSL connection to
access this resource,大部分人可能都不知道應該用HTTPS去訪問該網頁,造成的後果
是用戶會放棄訪問該網頁,這是Web應用服務提供商不願意看到的事情。
方法三 鏈接重定向
綜觀目前商業網站資源數據的交互訪問,要求嚴格加密傳輸的數據只佔其中一小部分,
也就是說在一個具體Web應用中需要使用SSL的服務程序只佔整體的一小部分。那麼,我
們可以從應用開發方面考慮解決方法,對需要使用HTTPS協議的那部分JSPs、Servlets或
EJBs進行處理,使程序本身在接收到訪問請求時首先判斷該請求使用的協議是否符合本
程序的要求,即來訪請求是否使用HTTPS協議,如果不是就將其訪問協議重定向為HTTPS
,這樣就避免了客戶使用HTTP協議訪問要求使用HTTPS協議的Web資源時,看到錯誤提示
信息無所適從的情況,這些處理對Web客戶來說是透明的。
實現思想是:首先創建一個類,該類方法可以實現自動引導Web客戶的訪問請求使用HTT
PS協議,每個要求使用SSL進行傳輸的Servlets或JSPs在程序開始時調用它進行協議重定
向,最後才進行數據應用處理。
J2EE提供了兩種鏈接重定向機制。第一種機制是RequestDispatcher介面里的forward()
方法。使用MVC(Model-View-Controller)機制的Web應用通常都使用這個方法從Servlet
轉移請求到JSP。但這種轉向只能是同種協議間的轉向,並不能重定向到不同的協議。第
二種機制是使用HTTPServletReponse介面里的sendRedirect()方法,它能使用任何協議
重定向到任何URL,例如:
BeSslResponse.sendRedirect(「https://192.168.100.100/order」);
此外,我們還需使用到Java Servlet API中的兩個方法:ServletRequest介面中的getS
cheme(),它用於獲取訪問請求使用的傳輸協議;HTTPUtils類中的getRequestUrl(),它
用於獲取訪問請求的URL,要注意的是該方法在Servlet 2.3中已被移到HTTPServletReq
uest介面。
以下是實現協議重定向的基本步驟:
1. 獲取訪問的請求所使用的協議;
2. 如果請求協議符合被訪問的Servlet所要求的協議,就說明已經使用HTTPS協議了,不
需做任何處理;
3. 如果不符合,使用Servlet所要求的協議(HTTPS)重定向到相同的URL。
例如,某Web用戶使用HTTP協議訪問要求使用HTTPS協議的資源BeSslServlet,敲入「UR
L:http://192.168.100.100/BeSslServlet」,在執行BeSslServlet時首先使用Proces
sSslServlet.processSsl()重定向到https://192.168.100.100/BeSslServlet,然後
BeSslServlet與客戶瀏覽器之間就通過HTTPS協議進行數據傳輸。
以上介紹的僅是最簡單的例子,是為了對這種重定向的方法有個初步的認識。假如想真
正在Web應用中實現,還必須考慮如下幾個問題:
● 在Web應用中常常會用到GET或Post方法,訪問請求的URL中就會帶上一些查詢字串,
這些字串是使用getRequesUrl()時獲取不到的,而且在重定向之後會丟失,所以必須在
重定向之前將它們加入到新的URL里。我們可以使用request.getQueryString()來獲取G
ET的查詢字串,對於Post的Request參數,可以把它們轉換成查詢串再進行處理。
● 某些Web應用請求中會使用對象作為其屬性,必須在重定向之前將這些屬性保存在該
Session中,以便重定向後使用。
● 大多數瀏覽器會把對同一個主機的不同埠的訪問當作對不同的主機進行訪問,分用
不同的Session,為了使重定向後保留使用原來的Session,必須對應用伺服器的Cookie
域名進行相應的設置。
以上問題均可在程序設計中解決。
通過程序自身實現協議重定向,就可以把要求嚴格保護的那部分資源與其他普通數據從
邏輯上分開處理,使得要求使用SSL的資源和不需要使用SSL的資源各取所需,避免浪費
網站的系統資源。

3. 如何為網站配置HTTPS協議

1.購買、下載SSL證書
SSL證書有付費也有免費的,當然價格其實並不很高。之前我有整理過國內外幾家知名的SSL商家,可供大家參考(http://blog.cnezsoft.com/blog/ssl-80138.html)。
2.備份,備份,備份
這是極其重要且必須的一步。即便你自認為技術深厚,對伺服器熟悉也不要忽視升級前做好網站備份。
3.安裝證書
不同廠家或都提供了相應的安裝證書的解決方案,流程大同小異。這里我以免費SSL證書為例,在LAMP環境下給大家介紹如何安裝證書。
打開apache的配置文件httpd.conf,找到
#LoadMole ssl_mole moles/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
刪除行首的配置語句注釋符號「#」
保存退出。
打開apache安裝目錄下conf/extra目錄中的httpd-ssl.conf文件
在配置文件中查找以下配置語句
SSLCertificateFile conf/ssl.crt/server.crt 將伺服器證書配置到該路徑下
SSLCertificateKeyFile conf/ssl.key/server.key 將伺服器證書私鑰配置到該路徑下
#SSLCertificateChainFile conf/ssl.crt/ca.crt 刪除行首的「#」號注釋符,並將中級CA證書 ca.crt配置到該路徑下。
添加SSL 協議支持語句,關閉不安全的協議和加密套件:
SSLProtocol all -SSLv2 -SSLv3
修改加密套件如下:
SSLCipherSuite AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
保存退出,並重啟Apache。檢查HTTPS頁面能否成功訪問。
4.301重定向
考慮到SEO影響,須將之前的HTTP頁面轉為HTTPS。我們修改配置文件即可,這里我還是以LAMP環境為例,在.htaccess文件中加下面代碼即可:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

4. 使用https訪問http/https通信協議,需要哪些配置文件

項目里需要訪問其他介面,通過http/https協議。我們一般是用HttpClient類來實現具體的http/https協議介面的調用。

// Init a HttpClient
HttpClient client = new HttpClient();
String url=http://www.xxx.com/xxx;

// Init a HttpMethod
HttpMethod get = new GetMethod(url);
get.setDoAuthentication(true);
get.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(1, false));

// Call http interface
try {
client.executeMethod(get);

// Handle the response from http interface
InputStream in = get.getResponseBodyAsStream();
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
} finally {
// Release the http connection
get.releaseConnection();
}

以上代碼在通過普通的http協議是沒有問題的,但如果是https協議的話,就會有證書文件的要求了。一般情況下,是這樣去做的。

// Init a HttpClient
HttpClient client = new HttpClient();
String url=https://www.xxx.com/xxx;

if (url.startsWith("https:")) {
System.setProperty("javax.net.ssl.trustStore", "/.sis.cer");
System.setProperty("javax.net.ssl.trustStorePassword", "public");
}

於是,這里就需要事先生成一個.sis.cer的文件,生成這個文件的方法一般是先通過瀏覽器訪問https://,導出證書文件,再用JAVA keytool command 生成證書

# $JAVA_HOME/bin/keytool -import -file sis.cer -keystore .sis.cer

但這樣做,一比較麻煩,二來證書也有有效期,過了有效期之後,又需要重新生成一次證書。如果能夠避開生成證書文件的方式來使用https的話,就比較好了。

還好,在最近的項目里,我們終於找到了方法。

// Init a HttpClient
HttpClient client = new HttpClient();
String url=https://www.xxx.com/xxx;

if (url.startsWith("https:")) {
this.supportSSL(url, client);
}

用到了supportSSL(url, client)這個方法,看看這個方法是如何實現的。

private void supportSSL(String url, HttpClient client) {
if(StringUtils.isBlank(url)) {
return;
}
String siteUrl = StringUtils.lowerCase(url);
if (!(siteUrl.startsWith("https"))) {
return;
}

try {
setSSLProtocol(siteUrl, client);
} catch (Exception e) {
logger.error("setProtocol error ", e);
}
Security.setProperty( "ssl.SocketFactory.provider",
"com.tool.util.DummySSLSocketFactory");
}

private static void setSSLProtocol(String strUrl, HttpClient client) throws Exception {

URL url = new URL(strUrl);
String host = url.getHost();
int port = url.getPort();

if (port <= 0) {
port = 443;
}
ProtocolSocketFactory factory = new SSLSocketFactory();
Protocol authhttps = new Protocol("https", factory, port);
Protocol.registerProtocol("https", authhttps);
// set https protocol
client.getHostConfiguration().setHost(host, port, authhttps);
}

在supportSSL方法里,調用了Security.setProperty( "ssl.SocketFactory.provider",
"com.tool.util.DummySSLSocketFactory");
那麼這個com.tool.util.DummySSLSocketFactory是這樣的:
訪問https 資源時,讓httpclient接受所有ssl證書,在weblogic等容器中很有用
代碼如下:
1. import java.io.IOException;
2. import java.net.InetAddress;
3. import java.net.InetSocketAddress;
4. import java.net.Socket;
5. import java.net.SocketAddress;
6. import java.net.UnknownHostException;
7. import java.security.KeyManagementException;
8. import java.security.NoSuchAlgorithmException;
9. import java.security.cert.CertificateException;
10. import java.security.cert.X509Certificate;
11.
12. import javax.net.SocketFactory;
13. import javax.net.ssl.SSLContext;
14. import javax.net.ssl.TrustManager;
15. import javax.net.ssl.X509TrustManager;
16.
17. import org.apache.commons.httpclient.ConnectTimeoutException;
18. import org.apache.commons.httpclient.params.HttpConnectionParams;
19. import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
20.
21. public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory {
22. static{
23. System.out.println(">>>>in MySecureProtocolSocketFactory>>");
24. }
25. private SSLContext sslcontext = null;
26.
27. private SSLContext createSSLContext() {
28. SSLContext sslcontext=null;
29. try {
30. sslcontext = SSLContext.getInstance("SSL");
31. sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
32. } catch (NoSuchAlgorithmException e) {
33. e.printStackTrace();
34. } catch (KeyManagementException e) {
35. e.printStackTrace();
36. }
37. return sslcontext;
38. }
39.
40. private SSLContext getSSLContext() {
41. if (this.sslcontext == null) {
42. this.sslcontext = createSSLContext();
43. }
44. return this.sslcontext;
45. }
46.
47. public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
48. throws IOException, UnknownHostException {
49. return getSSLContext().getSocketFactory().createSocket(
50. socket,
51. host,
52. port,
53. autoClose
54. );
55. }
56.
57. public Socket createSocket(String host, int port) throws IOException,
58. UnknownHostException {
59. return getSSLContext().getSocketFactory().createSocket(
60. host,
61. port
62. );
63. }
64.
65.
66. public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort)
67. throws IOException, UnknownHostException {
68. return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);
69. }
70.
71. public Socket createSocket(String host, int port, InetAddress localAddress,
72. int localPort, HttpConnectionParams params) throws IOException,
73. UnknownHostException, ConnectTimeoutException {
74. if (params == null) {
75. throw new IllegalArgumentException("Parameters may not be null");
76. }
77. int timeout = params.getConnectionTimeout();
78. SocketFactory socketfactory = getSSLContext().getSocketFactory();
79. if (timeout == 0) {
80. return socketfactory.createSocket(host, port, localAddress, localPort);
81. } else {
82. Socket socket = socketfactory.createSocket();
83. SocketAddress localaddr = new InetSocketAddress(localAddress, localPort);
84. SocketAddress remoteaddr = new InetSocketAddress(host, port);
85. socket.bind(localaddr);
86. socket.connect(remoteaddr, timeout);
87. return socket;
88. }
89. }
90.
91. //自定義私有類
92. private static class TrustAnyTrustManager implements X509TrustManager {
93.
94. public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
95. }
96.
97. public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
98. }
99.
100. public X509Certificate[] getAcceptedIssuers() {
101. return new X509Certificate[]{};
102. }
103. }
104.
105. }

public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory {
static{
System.out.println(">>>>in MySecureProtocolSocketFactory>>");
}
private SSLContext sslcontext = null;

private SSLContext createSSLContext() {
SSLContext sslcontext=null;
try {
sslcontext = SSLContext.getInstance("SSL");
sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
return sslcontext;
}

private SSLContext getSSLContext() {
if (this.sslcontext == null) {
this.sslcontext = createSSLContext();
}
return this.sslcontext;
}

public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
throws IOException, UnknownHostException {
return getSSLContext().getSocketFactory().createSocket(
socket,
host,
port,
autoClose
);
}

public Socket createSocket(String host, int port) throws IOException,
UnknownHostException {
return getSSLContext().getSocketFactory().createSocket(
host,
port

然後按如下方式使用HttpClient
Protocol myhttps = new Protocol("https", new MySecureProtocolSocketFactory (), 443);
Protocol.registerProtocol("https", myhttps);
HttpClient httpclient=new HttpClient();

5. 如何配置https站點

配置https站點需要申請SSL證書,並且部署到伺服器上才可以。申請SSL證書的流程:
第一步,生成並提交CSR(證書簽署請求)文件
CSR文件一般都可以通過在線生成(或伺服器上生成),申請人在製作的同時系統會產生兩個秘鑰,公鑰CSR和密鑰KEY。選擇了SSL證書申請之後,提交訂單並將製作生成的CSR文件一起提交到證書所在的CA頒發機構。
第二步,CA機構進行驗證
CA機構對提交的SSL證書申請有兩種驗證方式:
第一種是域名認證。系統自動會發送驗證郵件到域名的管理員郵箱(這個郵箱是通過WHOIS信息查詢到的域名聯系人郵箱)。管理員在收到郵件之後,確認無誤後點擊我確認完成郵件驗證。所有型號的SSL證書都必須進行域名認證。
第二種是企業相關信息認證。對於SSL證書申請的是OV SSL證書或者EV SSL證書的企業來說,除了域名認證,還得進行人工核實企業相關資料和信息,確保企業的真實性。
第三步,CA機構頒發證書
由於SSL證書申請的型號不同,所驗證的材料和方式有些區別,所以頒發時間也是不同的。
如果申請的是DV SSL證書最快10分鍾左右就能頒發。如果申請的是OV SSL證書或者EV SSL證書,一般3-7個工作日就能頒發。

6. 如何給域名配置https證書

一、製作CSR文件
CSR就是Certificate Secure Request證書請求文件。這個文件是由申請人製作,在製作的同時,系統會產生2個密鑰,一個是公鑰就是這個CSR文件,另外一個是私鑰,存放在伺服器上。要製作CSR文件,申請人可以參考WEB SERVER的文檔,一般APACHE等,使用OPENSSL命令行來生成KEY+CSR2個文件,Tomcat,JBoss,Resin等使用KEYTOOL來生成JKS和CSR文件,IIS通過向導建立一個掛起的請求和一個CSR文件。另外,也可以通過沃通CA提供的CSR在線生成工具在線生成,或者聯系沃通CA協助生成。
二、CA認證
將CSR提交給我們的工作人員,一般有2種認證方式:
1、域名認證,一般通過對管理員郵箱認證的方式,這種方式認證速度快,但是簽發的證書中沒有企業的名稱;
2、企業文檔認證,需要提供企業的營業執照。一般需要3-5個工作日。
三、證書的安裝
在收到我們發給您的CA證書後,可以將證書部署上伺服器,一般APACHE文件直接將KEY+CER復制到文件上,然後修改HTTPD.CONF文件;TOMCAT等,需要將CA簽發的證書CER文件導入JKS文件後,復制上伺服器,然後修改SERVER.XML;IIS需要處理掛起的請求,將CER文件導入。
以上,依然不知道如何申請,可以聯系沃通CA為您提供更加詳細周到的幫助。

熱點內容
愛感大黑牛怎麼連接安卓手機 發布:2025-02-04 04:41:31 瀏覽:218
publicftp 發布:2025-02-04 04:41:26 瀏覽:71
sqlserver超時 發布:2025-02-04 04:39:58 瀏覽:70
網路推理演算法 發布:2025-02-04 04:37:00 瀏覽:258
c怎麼存儲數據 發布:2025-02-04 04:31:12 瀏覽:61
奧迪q3行駛證如何查配置 發布:2025-02-04 04:28:26 瀏覽:329
ebay商品上傳 發布:2025-02-04 04:23:38 瀏覽:83
linux嵌入式書籍 發布:2025-02-04 03:44:07 瀏覽:334
sql分組最後一條 發布:2025-02-04 03:38:24 瀏覽:272
單宮數字奇門演算法 發布:2025-02-04 03:33:57 瀏覽:864