簡體   English   中英

在 HTTP 標頭中添加證書

[英]ADD certificate in HTTP Header

我想在 http 標頭中添加證書。 我的問題是:

  1. 我們是否必須將其作為字節數組發送? 還是作為字符串?
  2. 如果是,java.securit.PublicKey 的 toString 方法是否構建了良好的字符串表示?
  3. 插入一個http頭是不是太長了? 謝謝

代碼 :

public byte []   getCertificate() throws IOException, KeyStoreException, CertificateException, NoSuchAlgorithmException {
    if (Configuration.getSignaturekeyStoreLocation()==null || ewalletConfiguration.getSignaturekeyStoreLocation().isEmpty()) {
            throw new IllegalArgumentException("Keystore url must not be null");
        }
        FileInputStream is = new FileInputStream(Configuration.getSignaturekeyStoreLocation());
        char[] keyPassword = ewalletConfiguration.getSignaturekeyStorePassword().toCharArray();
        KeyStore keystore = KeyStore.getInstance("JKS");
        //keyStore Password
        keystore.load(is, keyPassword);
        //
        final Certificate cert = (Certificate) keystore.getCertificate(Configuration.getSignatureCertificateAlias());

        return  cert.getEncoded();
}``

`

為什么標題中會有證書有不同的目的,所以如果你解釋用例會更簡單。

我們是否必須將其作為字節數組發送? 還是作為字符串?

HTTP 標頭始終是一個字符串,我假設您需要使用 base64 編碼。

如果是,java.securit.PublicKey 的 toString 方法是否構建了良好的字符串表示?

不,公鑰只是一個公鑰,而不是整個證書(證書包含公鑰)。 獲取 (x509) 證書表示的最簡單方法是使用getEncoded方法

插入一個http頭是不是太長了? 謝謝

它可能。 通常,http 服務器有特定的頭緩沖區(例如 apache tomat 有/有默認 8kB 緩沖區,IIS 16kB)所以如果返回的編碼響應會更大,服務器可能會返回錯誤響應。 即使我知道一些客戶端/瀏覽器有不同的限制。

我很好奇你想實現什么,也許有更健壯的方法,比如在有效載荷中發送必要的證書或只發送證書簽名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM