日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

傳輸加密

為了提高客戶應用端和Hologres的傳輸鏈路安全性,您可以啟用SSL(Secure Sockets Layer)傳輸加密。SSL通過使用數字證書和加密算法(如TLS)在Hologres實例和客戶端之間建立加密連接,以保護數據傳輸過程中的機密性和完整性。

適用場景

SSL傳輸加密適用于以下場景:

  • 數據庫遠程訪問:當客戶端需要從遠程位置訪問數據庫時,SSL傳輸加密可以提升數據傳輸過程中的安全性。

  • 符合安全合規要求:許多行業標準和法規要求在數據傳輸過程中使用加密技術,使用SSL傳輸加密可以幫助組織符合這些安全合規要求。

SSL傳輸在傳輸層對網絡連接進行加密,能提升通信數據的安全性和完整性,但會同時增加網絡連接響應時間。

前提條件

注意事項

  • Hologres V1.1及以上版本支持開啟傳輸加密功能;V1.2及以上版本支持TLS;V2.1版本及以上版本,支持開啟傳輸加密功能、支持使用CA證書的傳輸加密,并支持管理控制臺自助開啟。

    說明

    如果您的實例是V1.1以下版本,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?

  • 開啟或關閉SSL傳輸加密均需要重啟實例,請謹慎操作。SSL傳輸加密默認情況為關閉狀態。

    • Hologres開啟SSL傳輸加密后,表示允許客戶端通過SSL連接Hologres,在客戶端連接Hologres時,可以選擇加密或者不加密連接Hologres,但是需要顯式指定。

    • Hologres關閉SSL傳輸加密后,僅支持通過非SSL方式連接。

  • Hologres對于SSL傳輸加密支持如下模式:

    SSL模式

    最低支持版本

    Require:只對數據鏈路加密。

    V1.1

    Verify-CA:加密數據鏈路,同時使用CA證書驗證Hologres服務端的真實性。

    V2.1

    Verify-Full:加密數據鏈路,使用CA證書驗證Hologres服務端的真實性,同時比對證書內的CN或DNS與連接時配置的Hologres連接地址是否一致。

    V2.1

  • SSL的證書有效期為1年,到期后需要手動更新證書有效期。否則到期后無法使用SSL傳輸加密連接實例。

  • 開啟SSL傳輸加密后,會造成CPU使用率上升、讀寫時延增長。

  • 開啟SSL傳輸加密后,已有連接需要斷開重連,加密才會生效。

  • 開啟、關閉SSL傳輸加密和更新SSL證書有效期,將會重啟您的Hologres實例,用時約3分鐘左右,請在業務低峰期操作。

步驟1:開啟Hologres實例的傳輸加密

  1. 登錄Hologres管理控制臺,在左上方選擇地域。

  2. 在左側導航欄單擊實例列表,然后單擊目標實例ID。

  3. 在實例詳情頁面單擊數據安全

  4. SSL頁簽,打開SSL 加密功能開關。

  5. 開通SSL鏈路加密對話框,單擊開通SSL

步驟2:下載CA證書

Hologres提供實例CA證書供您下載,當您通過客戶端遠程連接Hologres實例時,使用實例CA證書可以對實例真偽進行校驗。

  1. 登錄Hologres管理控制臺,在左上方選擇地域。

  2. 在左側導航欄單擊實例列表,然后單擊目標實例ID。

  3. 在實例詳情頁面單擊數據安全

  4. SSL頁簽,單擊下載證書

步驟3:連接Hologres

支持通過PSQL客戶端和JDBC兩種方式連接Hologres,在連接的過程中通過配置參數選擇是否開啟SSL連接傳輸加密。

使用PSQL命令行連接Hologres

  • 連接語句。

    PG_USER=<AccessKey ID> 
    PG_PASSWORD=<AccessKey Secret> 
    PG_SSLMODE=<SSL Mode> 
    PG_SSLROOTCERT=<certificate folder> 
    PGSSLMODE=$PG_SSLMODE PGSSLROOTCERT=$PG_SSLROOTCERT PGUSER=$PG_USER PGPASSWORD=$PG_PASSWORD psql -p <Port> -h <Endpoint> -d <Database>
  • 參數說明。

    參數

    描述

    AccessKey ID

    當前阿里云賬號的AccessKey ID。

    您可以單擊AccessKey 管理,獲取AccessKey ID。

    建議您使用環境變量的方式調用用戶名和密碼,降低密碼泄露風險。

    AccessKey Secret

    當前阿里云賬號的AccessKey Secret。

    您可以單擊AccessKey 管理,獲取AccessKey Secret。

    建議您使用環境變量的方式調用用戶名和密碼,降低密碼泄露風險。

    SSL Mode

    PSQL連接Hologres時傳輸加密的模式配置,取值及其含義如下。

    • require:使用傳輸加密,只對數據鏈路加密。

    • verify-ca:加密數據鏈路,同時驗證Hologres實例的真實性。

    • verify-full:加密數據鏈路,驗證Hologres實例的真實性,同時比對證書內的CN或DNS與連接時配置的數據庫連接地址是否一致。

    • disable:不使用傳輸加密。

    certificate folder

    CA證書的存儲路徑。

    如果SSL Mode參數配置的值為verify-caverify-full,需要配置此參數。

    Port

    Hologres實例的公共網絡端口。

    示例取值80

    Endpoint

    Hologres實例的公共網絡地址。

    示例取值xxx-cn-hangzhou.hologres.aliyuncs.com

    Database

    Hologres的數據庫名稱。

    開通Hologres實例后,系統自動創建postgres數據庫。

    您可以使用postgres數據庫鏈接Hologres,但是該數據庫分配到的資源較少,開發實際業務建議您新建數據庫。詳情請參見創建數據庫

    示例取值mydb

  • 連接驗證。

    如果將PGSSLMODE設置為require,連接Hologres時出現如下提示,則表示已經使用SSL傳輸加密連接。傳輸加密

使用JDBC連接Hologres

您使用JDBC連接Hologres時,可以通過連接配置參數sslsslmode控制是否使用SSL傳輸加密。各參數的取值不同,在Hologres中的結果也不同,如下所示。

Hologres實例是否開啟傳輸加密

ssl配置

sslmode配置

結果

true

  • require

  • verify-ca

  • verify-full

可以連接服務器,進行操作,數據傳輸過程中會使用傳輸加密。

false

  • require

  • verify-ca

  • verify-full

可以連接服務器,進行操作,數據傳輸過程中不會使用傳輸加密。

true

  • require

  • verify-ca

  • verify-full

報錯,報錯信息如下:

image.png

false

  • require

  • verify-ca

  • verify-full

可以連接服務器,進行操作,數據傳輸過程中不會使用傳輸加密。

代碼樣例如下。

 // 設置Hologres實例的連接地址
 String hostname = "hgxxxxxxx-cn-hangzhou-vpc.hologres.aliyuncs.com:80";
 // 設置Hologres實例的連接端口
 String port = "80";
 // 設置待連接的數據庫名
 String dbname = "postgres";

 String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbname+"?binaryTransfer=true";

 Properties properties = new Properties();
 // 設置連接數據庫的用戶名,建議通過環境變量調用。
 properties.setProperty("user", "accessid");
 //設置連接數據庫的密碼,建議通過環境變量調用。
 properties.setProperty("password", "accesskey");

  // 配置以ssl訪問
  properties.setProperty("ssl", "true");

  //設置證書授權機構的公鑰名
  properties.setProperty("sslrootcert", path + "/" + "hologres_certificate.crt");

  // 配置ssl模式,可選值為require、verify-ca、verify-full
  properties.setProperty("sslmode", "verify-full");

  try {
      Class.forName("org.postgresql.Driver");
      Connection connection = DriverManager.getConnection(jdbcUrl, properties);
      //本示例中,假設在postgres數據庫中存在表example,此處以查詢表example數據為例。
      PreparedStatement preparedStatement = connection.prepareStatement("select * from " +
              "example");
      ResultSet resultSet = preparedStatement.executeQuery();
      while (resultSet.next()) {
          ResultSetMetaData rsmd = resultSet.getMetaData();
          int columnCount = rsmd.getColumnCount();
          Map map = new HashMap();
          for (int i = 0; i < columnCount; i++) {
              map.put(rsmd.getColumnName(i + 1).toLowerCase(), resultSet.getObject(i + 1));
          }
          System.out.println(map);
      }
  } catch (Exception exception) {
      exception.printStackTrace();
  }