デジタル署名が無効と見なされる理由はいくつかあります。
文書の変更: 署名する文書が署名後に変更されていないことを確認してください。空白文字を追加しても、署名は無効になります。
文字エンコーディング: ドキュメントに Unicode 文字が含まれている場合は、正しいエンコーディングが指定されていることを確認してください。ほとんどの SAML ドキュメントは、次のように UTF8 でエンコードされることが想定されています。<?xml version="1.0" encoding="utf-8"?>
間違った要素の署名: アサーションを含む SAML ドキュメントは、通常、ドキュメント全体ではなく、アサーション自体に署名があると予想されます。
不正な証明書: 機関に提供した証明書が、署名しているキーと一致していることを確認してください。一部の実装では、ドキュメントに証明書を含める必要がありますが、他の実装では、証明書を事前に定義する必要がある場合があります。文書内の署名がファイルにある署名と一致しない場合、署名は有効とは見なされません。SSL証明書で署名していますか? 最近更新しましたか?
最終的には、ドキュメントを自分でテストする必要があります。多くの SAML ライブラリには、署名を検証するメカニズムがあります。あなたのライブラリは有効に見えますか? xmlsec1
それができない場合は、ドキュメントを証明書で手動で検証するなどの方法を使用できます。これは、図書館が暗号化に使用している可能性が高く、当局が検証に使用しているものです。
XMLSecの使用: 証明書が呼び出されcert.pem
、SAML 応答 XML ドキュメントが呼び出されdoc.xml
た場合、次のように検証します。
$ xmlsec1 --verify --pubkey-cert-pem cert.pem --id-attr:ID Response doc.xml
OK
SignedInfo References (ok/all): 1/1
--id-attr
ドキュメントの ID 属性に一致するように値を変更する必要がある場合があります。上記のような出力を探して、ドキュメントの署名が提供された証明書で有効であることを通知します。