日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

既然有了HTTP,為什么還要HTTPS?

來源: 責編: 時間:2024-07-11 17:33:13 769觀看
導讀在當今的互聯網時代,信息傳播的速度和互動的便捷性為我們的生活帶來了極大的便利。然而,隨之而來的數據安全與個人隱私保護問題也變得尤為緊迫。在這樣的背景下,HTTPS協議的普及已成為大勢所趨。與傳統的HTTP相比,HTTPS在

nv828資訊網——每日最新資訊28at.com

在當今的互聯網時代,信息傳播的速度和互動的便捷性為我們的生活帶來了極大的便利。然而,隨之而來的數據安全與個人隱私保護問題也變得尤為緊迫。在這樣的背景下,HTTPS協議的普及已成為大勢所趨。nv828資訊網——每日最新資訊28at.com

與傳統的HTTP相比,HTTPS在網站地址前綴的使用,為用戶與網站之間構建了一道堅固的安全屏障。本文將從安全性、信任度、合規性、性能及未來發展等多個方面,深入探討為什么越來越多的網站選擇以HTTPS開頭,而不是HTTP。nv828資訊網——每日最新資訊28at.com

一、HTTPS相較于HTTP有哪些優勢?

1.安全性:加密傳輸以抵御數據竊聽

超文本傳輸協議(HTTP)是互聯網中最廣泛使用的協議之一,其主要工作方式是明文傳輸數據,這使得數據在傳輸過程中容易被監聽、截取和篡改。這種情況在處理如用戶名、密碼和信用卡號等敏感信息時,構成了嚴重的安全風險。nv828資訊網——每日最新資訊28at.com

相比之下,HTTPS協議通過在HTTP上增加SSL/TLS加密,保障了數據在傳輸過程中的安全。SSL/TLS協議利用公鑰和私鑰的非對稱加密技術,以及會話密鑰的對稱加密技術,為數據包提供了強有力的加密保護。nv828資訊網——每日最新資訊28at.com

2.身份驗證:確保網站真實以防止釣魚欺詐

HTTPS不僅提供數據加密,還包含重要的身份驗證功能。網站在啟用HTTPS時,必須從權威的證書頒發機構(CA)獲取SSL證書。該證書包含了網站的身份信息并經過數字簽名,確保用戶訪問的網站是真實可信的,而非假冒站點。nv828資訊網——每日最新資訊28at.com

3.搜索引擎優化與用戶體驗

使用HTTPS的網站在搜索結果中的排名可能會優于HTTP網站。這不僅提升了網站的安全性,還間接提高了網站的搜索引擎可見度,吸引更多流量。nv828資訊網——每日最新資訊28at.com

4.性能優化與未來趨勢

過去,由于加密過程可能導致頁面加載速度減慢,HTTPS被視為影響性能的因素。但隨著技術的進步,如HTTP/2、HTTP/3協議的引入以及TLS 1.3的高效加密算法,HTTPS的性能劣勢已大大縮小。甚至在某些情況下,得益于協議優化和瀏覽器預加載機制,HTTPS的性能表現優于HTTP。nv828資訊網——每日最新資訊28at.com

綜上所述,網站選擇以HTTPS開頭而非HTTP,是互聯網發展至今的必然結果。HTTPS不僅確保數據安全傳輸,還在構建信任、優化搜索引擎排名、符合法規要求、提升用戶體驗以及適應技術發展趨勢等方面具有重要意義。nv828資訊網——每日最新資訊28at.com

下面就從代碼實戰方向,詳述一下Java中如何實現HTTPS服務端、客戶端、簽名證書。nv828資訊網——每日最新資訊28at.com

二、生成自簽名證書

打開命令行工具(CMD 或終端),運行以下命令生成自簽名證書:nv828資訊網——每日最新資訊28at.com

keytool -genkeypair -alias test -keyalg RSA -keysize 2048 -validity 365 -storetype PKCS12 -keystore test.p12 -storepass password

1.該命令的各個參數說明如下:

  • -genkeypair:生成密鑰對(公鑰和私鑰)。
  • -alias test:密鑰對的別名為 test。
  • -keyalg RSA:密鑰算法為 RSA。
  • -keysize 2048:密鑰大小為 2048 位。
  • -validity 365:證書有效期為 365 天。
  • -storetype PKCS12:密鑰庫類型為 PKCS12。
  • -keystore test.p12:密鑰庫文件名為 test.p12。
  • -storepass password:密鑰庫密碼為 password。

在運行上述命令時,您會被提示輸入一些信息,如下:nv828資訊網——每日最新資訊28at.com

What is your first and last name?  [Unknown]:  Your NameWhat is the name of your organizational unit?  [Unknown]:  Your Organizational UnitWhat is the name of your organization?  [Unknown]:  Your OrganizationWhat is the name of your City or Locality?  [Unknown]:  Your CityWhat is the name of your State or Province?  [Unknown]:  Your StateWhat is the two-letter country code for this unit?  [Unknown]:  USIs CN=Your Name, OU=Your Organizational Unit, O=Your Organization, L=Your City, ST=Your State, C=US correct?  [no]:  yes

按照提示輸入相關信息,完成后自簽名證書將生成在 test.p12 文件中。nv828資訊網——每日最新資訊28at.com

2.解決報錯:執行命令之后,keytool 錯誤: java.io.IOException: toDerInputStream rejects tag type 107

這個錯誤通常表示密鑰庫文件格式或其內容有問題。以下是一些可能的解決方案:nv828資訊網——每日最新資訊28at.com

  • 檢查keytool命令和參數:確保您使用了正確的命令和參數來生成密鑰庫文件。
  • 嘗試不同的密鑰庫格式:嘗試使用 JKS(Java KeyStore)格式而不是 PKCS12。雖然 PKCS12 是更現代的標準,但是 JKS 在某些情況下可能更兼容。
  • 確保環境變量正確:確保您的環境變量和 keytool 版本正確,尤其是如果您有多個 Java 安裝。

3.自動填寫信息

如果不想每次都手動輸入這些信息,可以在命令中使用 -dname 參數指定這些信息。例如:nv828資訊網——每日最新資訊28at.com

keytool -genkeypair -alias test -keyalg RSA -keysize 2048 -validity 365 -keystore test.p12 -storetype PKCS12 -storepass password -dname "CN=Your Name, OU=Your Organizational Unit, O=Your Organization, L=Your City, ST=Your State, C=CN"

nv828資訊網——每日最新資訊28at.com

4.解決報錯:執行之后報錯,keytool 錯誤: java.lang.Exception: 密鑰庫文件存在, 但為空: test.p12

這個錯誤表明 test.p12 文件已經存在,但其中沒有內容??赡苁窃谥暗膰L試中創建了這個文件,但沒有成功寫入任何數據。以下是解決方案:nv828資訊網——每日最新資訊28at.com

刪除現有的空文件并重新生成nv828資訊網——每日最新資訊28at.com

不需要在執行 keytool 命令之前手動創建 test.p12 文件。keytool 命令會自動生成并創建這個文件。如果 test.p12 文件已經存在,keytool 會更新這個文件中的密鑰對和證書。nv828資訊網——每日最新資訊28at.com

刪除文件后,提示我keytool 錯誤: java.io.FileNotFoundException: test.p12 (拒絕訪問。)nv828資訊網——每日最新資訊28at.com

確認當前用戶有權限nv828資訊網——每日最新資訊28at.com

確保當前用戶對相關目錄和文件具有讀寫權限。如果您在 Windows 上運行命令提示符或在 Unix/Linux 系統上運行終端,嘗試使用管理員權限。nv828資訊網——每日最新資訊28at.com

Windows 系統

  • 以管理員身份運行命令提示符
  • 右鍵點擊“命令提示符”,選擇“以管理員身份運行”。
  • 確認文件是否存在并刪除

Unix/Linux 系統

以超級用戶身份運行終端nv828資訊網——每日最新資訊28at.com

  • 使用 sudo 提升權限:```sudo rm test.p12`1``

總結步驟

  • 以管理員權限運行命令提示符或終端
  • 刪除空的 test.p12 文件。
  • 確保當前用戶對目錄具有寫權限。
  • 重新生成自簽名證書

三、示例代碼

1.本地 HTTPS 服務器

在生成了自簽名證書之后,可以將其用于您的 HTTPS 服務器配置中。nv828資訊網——每日最新資訊28at.com

使用生成的自簽名證書配置一個本地 HTTPS 服務器。nv828資訊網——每日最新資訊28at.com

import com.sun.net.httpserver.HttpExchange;import com.sun.net.httpserver.HttpHandler;import com.sun.net.httpserver.HttpsConfigurator;import com.sun.net.httpserver.HttpsServer;import javax.net.ssl.KeyManagerFactory;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManagerFactory;import java.io.FileInputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.InetSocketAddress;import java.security.KeyStore;public class LocalHttpsServer {    public static void main(String[] args) throws Exception {        // 加載密鑰庫        char[] passphrase = "password".toCharArray();        KeyStore ks = KeyStore.getInstance("PKCS12");        ks.load(new FileInputStream("C://Program Files//Java//jdk1.8.0_60//bin//test.p12"), passphrase);        // 初始化密鑰管理器工廠        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");        kmf.init(ks, passphrase);        // 初始化信任管理器工廠        TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");        tmf.init(ks);        // 初始化 SSL 上下文        SSLContext sslContext = SSLContext.getInstance("TLS");        sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);        // 創建 HTTPS 服務器        HttpsServer httpsServer = HttpsServer.create(new InetSocketAddress(8443), 0);        httpsServer.setHttpsConfigurator(new HttpsConfigurator(sslContext));        // 創建處理器        httpsServer.createContext("/api", new HttpHandler() {            @Override            public void handle(HttpExchange exchange) {                try {                    if ("POST".equals(exchange.getRequestMethod()) && "application/json".equals(exchange.getRequestHeaders().getFirst("Content-Type"))) {                        InputStream is = exchange.getRequestBody();                        StringBuilder jsonString = new StringBuilder();                        int i;                        while ((i = is.read()) != -1) {                            jsonString.append((char) i);                        }                        System.out.println("Received JSON: " + jsonString.toString());                        String response = "{/"message/":/"Received/"}";                        exchange.getResponseHeaders().set("Content-Type", "application/json");                        exchange.sendResponseHeaders(200, response.getBytes().length);                        OutputStream os = exchange.getResponseBody();                        os.write(response.getBytes());                        os.close();                    } else {                        exchange.sendResponseHeaders(405, -1); // Method Not Allowed                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        });        // 啟動服務器        httpsServer.setExecutor(null);        httpsServer.start();        System.out.println("HTTPS server started at https://localhost:8443/api");    }}

2.測試 HTTPS 服務器

創建好 HTTPS 服務器后,您可以使用以下 Java 客戶端進行測試:nv828資訊網——每日最新資訊28at.com

import javax.net.ssl.*;import java.io.OutputStream;import java.io.InputStream;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.security.cert.X509Certificate;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;public class HttpsPostJsonClient {    public static void main(String[] args) {        String httpsURL = "https://localhost:8443/api";        String jsonInputString = "{/"param1/":/"value1/",/"param2/":/"value2/"}";        try {            // 信任所有證書            TrustManager[] trustAllCerts = new TrustManager[]{                    new X509TrustManager() {                        public X509Certificate[] getAcceptedIssuers() { return null; }                        public void checkClientTrusted(X509Certificate[] certs, String authType) { }                        public void checkServerTrusted(X509Certificate[] certs, String authType) { }                    }            };            SSLContext sc = SSLContext.getInstance("SSL");            sc.init(null, trustAllCerts, new java.security.SecureRandom());            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());            HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {                public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {                    return true;                }            });            // 創建 URL 對象            URL url = new URL(httpsURL);            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();            // 設置請求方法為 POST            connection.setRequestMethod("POST");            // 允許寫入和讀取數據            connection.setDoOutput(true);            connection.setDoInput(true);            // 設置請求頭            connection.setRequestProperty("Content-Type", "application/json");            connection.setRequestProperty("Accept", "application/json");            // 發送 POST 數據            try (OutputStream os = connection.getOutputStream()) {                byte[] input = jsonInputString.getBytes("UTF-8");                os.write(input, 0, input.length);            }            // 讀取響應            try (InputStream is = connection.getInputStream();                 BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"))) {                StringBuilder response = new StringBuilder();                String responseLine;                while ((responseLine = br.readLine()) != null) {                    response.append(responseLine.trim());                }                System.out.println("Response: " + response.toString());            }        } catch (Exception e) {            System.out.println("exceptinotallow===: " + e);        }    }}

3.測試

(1)通過curl 命令行測試

curl -X POST https://localhost:8443/api -H "Content-Type: application/json" -d '{"param1":"value1","param2":"value2"}' -knv828資訊網——每日最新資訊28at.com

nv828資訊網——每日最新資訊28at.com

(2)通過客戶端代碼測試

通過上述步驟,您可以生成自簽名證書,并使用 Java 創建一個本地 HTTPS 服務器,接收 application/json 的 POST 請求,并通過 Java 客戶端進行測試。nv828資訊網——每日最新資訊28at.com

nv828資訊網——每日最新資訊28at.com

nv828資訊網——每日最新資訊28at.com

4.解決報錯:通過你的測試服務器代碼訪問之后報錯,java.io.IOException: Server returned HTTP response code: 405 for URL: https://localhost:8443/api

HTTP 405 錯誤表示 "Method Not Allowed",即服務器端拒絕了請求方法。由于我們在示例中設定了服務器僅接受 POST 請求,如果客戶端發送了其他方法(例如 GET),服務器會返回 405 錯誤。nv828資訊網——每日最新資訊28at.com

我們需要確??蛻舳舜a確實發送了 POST 請求,并且服務器端處理程序正確設置。nv828資訊網——每日最新資訊28at.com

我是因為設置請求頭時,寫的connection.setRequestProperty("Content-Type", "application/json; utf-8");,將其改為connection.setRequestProperty("Content-Type", "application/json");就解決了。nv828資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-100467-0.html既然有了HTTP,為什么還要HTTPS?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Springboot如何通過配置來決定使用的Web容器

下一篇: Token無感知刷新前端

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产欧美一区二区三区国产幕精品 | 狠狠入ady亚洲精品| 国产精品入口尤物| 欧美午夜精品久久久| 欧美日韩在线播放三区四区| 亚洲电影中文字幕| 香蕉国产精品偷在线观看不卡| 国产精品午夜春色av| 国产精品一区二区久久国产| 国产欧美一区二区三区沐欲| 黑人一区二区| 最新日韩av| 亚洲一区二区精品视频| 久久超碰97中文字幕| 久久婷婷蜜乳一本欲蜜臀| 欧美成人资源网| 国产精品sm| 国产一区二区三区免费观看| 在线日韩日本国产亚洲| 一区二区高清| 欧美在线看片| 欧美高清视频| 国产精品综合| 亚洲高清在线视频| 亚洲一区免费网站| 久久一区国产| 国产精品久久久久久久9999| 黄色日韩在线| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美日本国产在线| 国产伦一区二区三区色一情| 伊人久久大香线| 国产精品99久久久久久人| 久久精品123| 欧美色另类天堂2015| 狠狠色噜噜狠狠色综合久 | 久久亚洲不卡| 欧美系列电影免费观看| 一色屋精品视频免费看| 中文国产亚洲喷潮| 久久综合色婷婷| 国产目拍亚洲精品99久久精品| 亚洲国产日韩欧美| 欧美在线视频免费观看| 欧美日韩视频在线一区二区观看视频 | 久久精品视频免费观看| 欧美日韩成人综合在线一区二区 | 日韩一级黄色大片| 欧美四级在线观看| 亚洲国产一区二区视频| 亚洲欧美综合v| 欧美日产国产成人免费图片| 国内精品美女av在线播放| 在线视频日韩| 欧美第一黄网免费网站| 国产字幕视频一区二区| 亚洲欧美日产图| 欧美日韩成人一区二区| 在线观看成人网| 欧美一级黄色录像| 欧美系列精品| 亚洲毛片一区二区| 欧美va天堂va视频va在线| 国产日韩欧美自拍| 亚洲欧美日韩国产综合精品二区| 欧美精品偷拍| 最近看过的日韩成人| 久久久久久一区二区| 国产欧美日韩综合一区在线播放 | 欧美专区中文字幕| 国产伦精品一区二区三区视频黑人| 99精品热视频| 欧美激情二区三区| 在线国产亚洲欧美| 久久精品99无色码中文字幕| 国产精品香蕉在线观看| 亚洲免费影视第一页| 欧美日韩一区在线观看视频| 日韩视频永久免费观看| 欧美顶级艳妇交换群宴| 91久久午夜| 欧美韩日一区二区| 91久久精品国产91久久性色tv | 午夜精品在线看| 国产精品亚洲片夜色在线| 亚洲视频精品| 国产精品免费看片| 午夜日韩福利| 国产欧美欧洲在线观看| 性久久久久久久| 国产日韩欧美a| 久久精品国产欧美亚洲人人爽| 国产午夜精品麻豆| 欧美在线视频二区| 国模 一区 二区 三区| 久久久久国产精品午夜一区| 国产亚洲美州欧州综合国| 欧美在线观看一区| 好吊一区二区三区| 久久综合色一综合色88| 亚洲区免费影片| 欧美日韩黄视频| 亚洲一区二区黄色| 国产乱码精品一区二区三区不卡| 欧美亚洲专区| 在线观看国产欧美| 欧美理论在线播放| 一区二区三区四区国产精品| 欧美日韩精品一二三区| 亚洲一区二区影院| 国产伦理精品不卡| 久久天天躁夜夜躁狠狠躁2022| 1000部国产精品成人观看| 欧美激情久久久久| 中文av字幕一区| 国产亚洲精品激情久久| 欧美暴力喷水在线| 国产精品99久久99久久久二8| 国产精品免费福利| 久久视频精品在线| 亚洲激情成人在线| 国产精品久久久一本精品| 欧美在线网址| 91久久久久久| 国产精品xxx在线观看www| 久久爱91午夜羞羞| 亚洲激情一区| 国产精品美女一区二区| 久久久精品tv| 999亚洲国产精| 国产日韩精品一区观看| 欧美成人在线免费视频| 亚洲一区二区少妇| 亚洲国产岛国毛片在线| 欧美涩涩视频| 久久久久国产一区二区三区| 亚洲精品国产日韩| 国产日产亚洲精品系列| 蜜桃久久精品乱码一区二区| 亚洲性感美女99在线| 国语精品一区| 欧美日韩国产限制| 久久视频国产精品免费视频在线| 99ri日韩精品视频| 国产午夜精品久久久久久免费视| 欧美激情精品久久久久久蜜臀| 亚洲资源在线观看| 亚洲激情视频网| 国产日韩在线看| 欧美人体xx| 久久久久久欧美| 亚洲视频久久| 亚洲国产婷婷香蕉久久久久久| 国产精品美女久久久| 暖暖成人免费视频| 欧美一区二区黄色| 亚洲视频免费在线| 亚洲欧洲三级电影| 国内精品久久久久影院优| 国产精品国产精品国产专区不蜜| 欧美sm重口味系列视频在线观看| 午夜影院日韩| 一本到高清视频免费精品| 尤物精品在线| 国产视频亚洲| 国产精品sm| 欧美日韩美女| 欧美电影免费观看高清| 久久久久免费视频| 欧美一区二区日韩| 亚洲在线不卡| 一区二区日韩免费看| 亚洲激情在线| 伊人精品在线| 国内外成人免费激情在线视频| 国产精品swag| 欧美日韩综合| 欧美日韩1区| 欧美 日韩 国产精品免费观看| 久久精品天堂| 久久av红桃一区二区小说| 亚洲中无吗在线| 亚洲午夜一区二区三区| 一本大道av伊人久久综合| 亚洲国产欧美国产综合一区| 尤物yw午夜国产精品视频| 国产一区二区三区网站| 国产精品最新自拍| 国产精品久久久久久久久久久久久久| 欧美精品在欧美一区二区少妇| 噜噜噜噜噜久久久久久91| 久久精品一本久久99精品| 欧美一区二区三区在线| 亚洲午夜精品国产| 国产精品99久久久久久有的能看| 99在线精品免费视频九九视| 亚洲国内自拍| 亚洲国内自拍| 亚洲黄色影院| 最新国产の精品合集bt伙计| 亚洲成色精品| 亚洲国产成人不卡| 最新日韩在线视频| 亚洲三级免费电影|