2

私は自分の xml ファイルに署名して、ファイルを渡した相手が改ざんされていないことを確信できるようにし、これらが私からの XML ファイルであることを保証したいと考えています。私はxmlseclib(動作しているように見えるphp)を使用しています。いくつか質問があります。お答えいただければ幸いです。

  1. ライブラリで、秘密の RSA キーと証明書を送信します。証明書はどのように処理すればよいですか?https サーバー用に購入した証明書を使用する場合、1 年間しか有効ではありませんか? 署名済みの文書を永久に有効にしたい。独自の証明書を生成する必要がありますか? opensslでそれを行うにはどうすればよいですか?

  2. ds:SignatureValue、ds:DigestValue、および ds:X509Certificate の内容と、それらがどのように使用されるかの概要を教えてください。

自動追加されたタグ:

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-  exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference>
<ds:Transforms>
<ds:TransformAlgorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>  
</ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
<ds:DigestValue>WHAT_GOES_HERE</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>WHAT_GOES_HERE</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>WHAT_GOES_HERE</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>

ありがとう

4

1 に答える 1

1

証明書はフィールド #3 に含める必要があります。署名が有効であることを受信者が判断できるように、証明書の信頼できるチェーンを構築するのに役立ちます。

署名がまだ有効であるかどうかは、検証を行う人によって異なります。ただし、通常、データの署名に SSL 証明書を使用することはありません。別の信頼関係を確立することは基本的に PKI であり、Stackoverflow の範囲外です。

フィールド #1 には、署名されたデータに対する base64 エンコーディングの安全なハッシュが含まれているだけです。複数のハッシュが存在する場合があります。

フィールド #2 は、SignedInfoパーツの署名です。署名は、 に対する別の安全なハッシュSignedInfoと、RSA の累乗剰余のような非対称関数で構成されます。バイナリ形式なので、base 64 でエンコードされます。

于 2013-05-16T22:39:17.013 に答える