
인커먼 페더레이션IdP 및 SP 메타데이터를 제공합니다. 새로 고침 정책에서는 자주 확인하도록 권장합니다.메타데이터 집계최신 버전을 사용하려면. InCommon SP를 적극 권장합니다.메타데이터 새로 고침 및 확인적어도 매일.
다음에 제공된 지침을 따르십시오.메타데이터 소비페이지에서 집계를 다운로드하고 메타데이터 서명 인증서의 정품 복사본을 얻습니다.
그런 다음 "다운로드한 메타데이터의 XML 서명을 확인"합니다. 여기에 문제가 있습니다. 다운로드한 메타데이터를 확인할 수 있습니다내장된 x509 인증서 사용, 그러나 별도로 다운로드한 메타데이터 서명 인증서를 사용하여 확인할 수는 없습니다.
InCommon에서 두 개의 파일을 다운로드했습니다.
- XML:
InCommon-metadata-idp-only.xml
- 개인 서명 키:
inc-md-cert.pem
나는 다음 명령을 실행할 수 있어야 한다고 생각했습니다.
# xmlsec1 --verify \
--id-attr:ID urn:oasis:names:tc:SAML:2.0:metadata:EntitiesDescriptor \
--privkey-pem ./inc-md-cert.pem \
./InCommon-metadata-idp-only.xml
"./inc-md-cert.pem에서 개인 키를 로드하지 못했습니다."라는 메시지가 표시되지 않습니다. 을 사용하여 유효한 키가 포함되어 있는지 확인할 수 있습니다 openssl x509 -text -in ./inc-md-cert.pem
. (읽을 수 있고 올바른 경로입니다.) --privkey-pem
또는 으로 참조하면 같은 방식으로 실패합니다 --pubkey-pem
.
이제 대신 사용하면 --pubkey-cert-pem ./inc-md-cert.pem
오류 없이 실행되어 OK SignedInfo References (ok/all): 1/1
.
하지만 아니요, 내 개인 서명 키를 분명히 무시하고 단순히 메타데이터.xml 파일에 포함된 키를 기반으로 확인을 수행하는 것입니다. (인수를 완전히 제거할 수 --pubkey-cert-pem
있으며 내장된 x509 인증서를 사용하여 확인이 계속 작동합니다.
업데이트
제공된 서명 파일이 조직에 의해 자체 서명된 것이므로 신뢰할 수 있는 인증서로 추가해 보았습니다. 예를 들어 openssl을 사용하여 기본 확인을 시도하는 경우 다음을 비교하십시오.
# openssl verify ./inc-md-cert.pem
error 18 at 9 depth lookup:self signed certificate
# openssl verify -CAfile ./inc-md-cert.pem ./inc-md-cert.pem
./inc-md-cert.pem: OK
그렇다면 그게 문제라면 어떨까요? 그래서 --trusted-pem
옵션 을 추가해보려고 합니다
# xmlsec1 --verify \
--id-attr:ID urn:oasis:names:tc:SAML:2.0:metadata:EntitiesDescriptor \
--privkey-pem ./inc-md-cert.pem \
--trusted-pem ./inc-md-cert.pem \
./InCommon-metadata-idp-only.xml
func=xmlSecOpenSSLAppKeyLoadBIO:file=app.c:line=263:
obj=unknown:subj=PEM_read_bio_PrivateKey and PEM_read_bio_PUBKEY:
error=4:crypto library function failed:
func=xmlSecOpenSSLAppKeyLoad:file=app.c:line=153:
obj=unknown:subj=xmlSecOpenSSLAppKeyLoadBIO:
error=1:xmlsec library function failed:
filename=/tmp/inc-md-cert.pem;errno=2
func=xmlSecAppCryptoSimpleKeysMngrKeyAndCertsLoad:file=crypto.c:line=118:
obj=unknown:subj=xmlSecCryptoAppKeyLoad:
error=1:xmlsec library function failed:uri=./inc-md-cert.pem
Error: failed to load public key from "./inc-md-cert.pem".
Error: keys manager creation failed
내 입장에서는 이것이 그다지 어렵지 않기 때문에 근본적인 오류가 있다고 생각합니다. 외부 키(InCommon에서 제공)를 사용하여 메타데이터 파일(InCommon에서 제공)의 서명을 확인하려면 어떻게 해야 합니까?
답변1
약간 만족스럽지는 않지만 한 가지 해결책은 다음과 같습니다.
a) InCommon 메타데이터 파일을 확인합니다.내장된 인증서 사용.
# xmlsec1 --verify --id-attr:ID \
urn:oasis:names:tc:SAML:2.0:metadata:EntitiesDescriptor \
./InCommon-metadata-idp-only.xml
OK
SignedInfo References (ok/all): 1/1
Manifests References (ok/all): 0/0
b) 그런 다음 내장된 인증서를 별도로 다운로드한 인증서와 간단히 비교하십시오. 모듈로 공백이 일치해야 합니다. 하나 또는 다른 인증서가 연결될 수 있으므로 비교를 위해 무시해야 합니다.
답변2
꽤 많은 어려움을 겪은 끝에 --enabled-key-data
명령줄에 다음을 추가해 볼 수 있다는 것을 알게 되었습니다. 예를 들면 다음과 같습니다.
--enabled-key-data rsa
또는
--enabled-key-data x509
둘 중 하나가 작동해야 합니다. 당신은 또한 시도할 수 있습니다
xmlsec1 --list-key-data
선택할 수 있는 항목을 보려면
귀하의 경우에는
xmlsec1 --verify \
--enabled-key-data rsa \
--id-attr:ID urn:oasis:names:tc:SAML:2.0:metadata:EntitiesDescriptor \
--pubkey-cert-pem ./inc-md-cert.pem \
./InCommon-metadata-idp-only.xml
당신이 원하는 것을해야합니다.