當前位置:首頁 » 文件傳輸 » https訪問怎麼才能實現
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

https訪問怎麼才能實現

發布時間: 2022-09-22 18:14:34

① 如何訪問https的網站

要想訪問的是https網站的話,那麼首要的前提就是該網站是安裝了SSL證書,只要安裝部署了SSL證書才可以實現https化,然後直接在各大主流瀏覽器上就可以正常訪問了。

② 在項目里如何通過http/https實現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();

③ 如何選擇SSL證書來實現https訪問網站

一、根據證書的安全等級選擇

域名型DV SSL證書:表現形式為地址欄顯示安全鎖+https;適用於中小型企業官網、中小型商務網站、電子郵局伺服器、個人網站等,10分鍾左右就可完成域名驗證和快速頒發證書,無需遞交紙質文件,僅驗證域名管理權,無需人工驗證申請單位真實身份,快速簽發、價格低廉。

企業型OV SSL證書:表現形式為地址欄顯示安全鎖+https,且SSL證書詳情有企業信息,無法仿造;適用於企業官網、商務網站、證券、金融機構等,通過證書頒發機構審查網站企業身份和域名所有權以證明申請單位是一個合法存在的真實實體,用戶可以在證書裡面看到申請SSL證書的公司名稱。一般OV 證書在 1 至 5 個工作日內簽發。

增強型EV SSL證書:這個被認為是現有最安全的證書之一。表現形式為綠色地址欄顯示公司名稱+安全鎖+https,適用於金融證券、銀行、第三方支付、網上商城等,重點強調網站安全和品牌可信形象的網站,涉及交易支付、客戶隱私信息和賬號密碼的傳輸,建議選擇顯示綠色地址欄的EV SSL證書,更值得用戶信賴。

涉及資金交易、機密信息傳輸等對安全性能要求高的網站,請選擇支持強制128/256位加密的SSL證書,規避部分用戶未升級瀏覽器導致加密位數較低而產生的安全風險。建議此類網站盡量採用安全性能更高的強制加密證書。另外其他不涉及交易、機密數據或敏感信息傳輸的網站,也可根據自身需求和風險評估,選擇價格實惠的自適應加密SSL證書。

二、根據域名數量選擇

單域名SSL證書:如果您只有一個域名,您可以獲得單域名SSL證書。如果您有一個主要基於內容的相對簡單和直接的網站,則單個域SSL證書是最佳選擇。大多數個人網站屬於該類別。

多域名SSL證書:多域名數字證書是指一張證書可以保護多個域名,這樣在證書的管理和續費上都能帶來很大的便利。如果您擁有多個域名的網站,則可以選擇多域名SSL證書,只需安裝一個證書,就能輕松保護多個域名。

通配符SSL證書:通配符域名證書,適用於同一主域名下同一級所有的子域名,不限個數。通配符證書可以保護通用域名和您在提交申請時指定的級別下的所有子域,只需在通用域名左側的子域區域添加星號 (*) 即可。

SSL證書證書根據不同類型其支持功能也不一樣。一般情況,一張SSL證書對應一個域名。只有選擇通配符證書以及多域名證書才支持多個域名。因此用戶要想擁有多個域名或者通配符域名,是要根據SSL證書的支持類型來選擇的。

很多證書頒發機構都可以出售證書,由於SSL證書種類繁多,選擇購買SSL證書前。要根據自己網站類型做判斷,來挑選適合的證書。或者通過SSL證書類型分類確定,網站更適合哪種類型。比如:擁有子域名的網站就選通配符型證書,擁有多個域名的網站則應當選多域名型證書。

三、根據網站類別選擇

個人網站:如果經營的是小型的個人網站,是個人站長或者自媒體,需要HTTPS但是對於網站信譽度沒有過高的要求,那麼就可以選擇域名驗證證書(DV)。DV證書簽發速度快,價格便宜,通常十分鍾內就可完成簽發,無需復雜的網站身份驗證過程,支持HTTPS和安全掛鎖標志,性價比極高。

企業網站:如果經營的是普通企業類網站,涉及注冊、登錄、會員中心等頁面,那麼推薦使用企業型SSL證書(OV)或增強型SSL證書(EV)。這兩種證書都要求對網站所屬者的身份進行認證,能夠證明網站的真實身份,杜絕釣魚網站,並且更好得保護訪客的個人信息安全。EV證書會使網站地址欄變綠,利於品牌推廣,更容易贏得客戶信賴。

電商網站:對於電商類網站來說,用戶的信息安全和網站的品牌形象是購買SSL證書的關鍵因素。電商類網站涉及交易支付、客戶隱私信息以及賬號密碼等,需要更高一級的加密。並且電商類網站訪問量較大,品牌形象較為重要,推薦使用專業版企業型SSL證書(OV)或專業版增強型SSL證書(EV)。

金融類網站:金融證券、銀行、第三方支付網站通常需要最高級別的安全保護,不僅僅涉及到用戶的隱私信息、信用卡信息、支付安全等,更對於網站的真實身份有著高標準的需求。增強型擴展驗證證書(EV)最適合金融類網站使用,EV證書指遵照全球統一標准頒發的SSL證書,對網站進行嚴格的身份驗證,是目前安全級別最高的SSL證書。並且在安裝EV證書之後,瀏覽器會直觀顯示綠色地址欄和中文單位名稱,安全可信一目瞭然。

④ 如何實現https

第一步:將CSR提交到代理商
CSR(Certificate Signing Request)文件必須由用戶自己生成,也可以利用在線CSR生成工具。選擇要申請的產品,提交一個新的訂單,並將製作好的CSR文件提交。
第二步 資料提交到CA
當收到您的訂單和CSR後,如果是域名驗證型證書(DV SSL證書),在域名驗證之後10分鍾左右就可頒發證書,若是其他類型證書則是需要通過CA機構進行驗證之後才可頒發。
第三步 發送驗證郵件到管理員郵箱
權威CA機構獲得資料後,將發送一封確認信到管理員郵箱,信中將包含一個 對應的鏈接過去。每一個訂單,都有一個唯一的PIN以做驗證用。
第四步 郵件驗證
點擊確認信中的鏈接,可以訪問到CA機構驗證網站,在驗證網站,可以看到該訂單的申請資料,然後點擊」I Approve」完成郵件驗證。
第五步 頒發證書
在用戶完成郵件驗證之後,CA機構會將證書通過郵件方式發送到申請人自己的郵箱。
當用戶收到SSL證書後就可以配置到伺服器上就可以實現HTTPS加密了。

⑤ 如何將網站設置成https訪問的模式

一、申請SSL 簽發證書。
二、准備好獨立伺服器或雲伺服器、域名。
三、拿到簽發的SSL證書,根據機構教程安裝到伺服器。
四、測試HTTPS網站是否正常。

⑥ 如何訪問https的網站

SSL證書+域名或公網IP+伺服器配置證書=HTTPS訪問

啟動https訪問:

  1. 確定需要HTTPS的域名,進入淘寶中找到:Gworg,選擇SSL證書申請。

  2. 獲得SSL證書配置到伺服器就可以實現HTTPS訪問了。

快速解決辦法:直接找到Gworg提供域名與伺服器信息可以快速實現網站HTTPS。

⑦ 如何讓自己的網站也能實現https訪問

很簡單,去安信證書申請一張合適的SSL證書部署到伺服器上,網站就能實現https訪問。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個工作日就能頒發。
完成以上SSL證書申請步驟收到CA的證書之後,就可以將證書部署到伺服器上實現https加密訪問。

⑧ 如何選擇SSL證書來實現https訪問網站

1、根據證書的類型
DV SSL證書(域名驗證型):只驗證域名所有適合個人網站、博客等站點使用;OV SSL證書(企業驗證型):驗證網站所屬單位身份,適合於中型企業級用戶使用;EV SSL證書 (擴展驗證型):擴展驗證網站所屬單位身份,適合高度信任的企業級用戶使用。如金融行業的銀行,電子商務平台。
2、支持的域名數量
SSL證書證書根據不同類型其支持功能也不一樣。一般情況,一張SSL證書對應一個域名。只有通配符證書以及多域名證書才支持多個域名。因此用戶擁有多個域名或者通配符域名,可根據SSL證書的支持類型來選擇。
通配符域名證書,可以保護一個域名以及該域名所有的二級子域名,不限制子域名數量,且添加新的子域名無須重新審核和另外付費,節約了大量的時間和金錢成本。
3、網站加密需求
涉及資金交易、機密信息傳輸等對安全性能要求高的網站,請選擇支持強制128/256位加密的SSL證書,規避部分用戶未升級瀏覽器導致加密位數較低而產生的安全風險。頂級EV SSL證書和企業級OV SSL證書都支持強制128/256位加密,建議此類網站盡量採用安全性能更高的強制加密證書。另外其他不涉及交易、機密數據或敏感信息傳輸的網站,也可根據自身需求和風險評估,選擇價格實惠的自適應加密SSL證書。