php 편집자 Strawberry는 서명 인증서를 소개하면서 승인된 키 식별자(SKID)가 서명 프로세스에서 중요한 역할을 한다는 점을 지적했습니다. 인증서가 서명되면 SKID가 인증서에 복사되어 인증서의 인증된 키를 식별합니다. 이 식별자가 있으면 인증서의 진위성과 적법성을 보장하고 후속 인증서 확인 및 관리를 용이하게 하는 데 도움이 될 수 있습니다. SKID 복사는 인증서 서명 시 꼭 필요한 단계로, 인증서의 사용 및 유지에 있어 중요한 역할을 합니다.
CSR과 spacemonkeygo/openssl
래퍼를 사용하여 인증서에 서명하려고 합니다.
인증서 서명을 위한 콘솔 openssl 명령이 예상대로 작동하고 유효한 인증서를 얻습니다.
으아악스크린샷에서 볼 수 있듯이 skid와 issuer의 keyid가 다릅니다.
그러나 Go의 내 코드는 잘못된 인증서를 제공합니다. 여기서 스키드에는 인증서를 발급한 키 ID의 정확한 값이 포함되어 있습니다. 이로 인해 "인증 키 식별자"에 "발급자"에 대한 잘못된 값이 복사됩니다. 스키드가 발급자의 키 ID와 동일하므로 인증서가 자체 발급된 것으로 "생각"합니다.
으아악(생성된 것이 맞습니다)
전화하지 않으면setissuer
스키드가 새로 생성되는데 생성된 인증서가 여전히 "잘못됨"으로 표시됩니다.
내 코드에서 내가 뭘 잘못하고 있는 걸까?
업데이트:
2개의 래퍼에 대한 확장을 추가하는 구현을 비교했습니다. spacemonkey/go
和 pyopenssl
.
이동:
으아악python(일부 설명 생략):
으아악명백한 차이점은 api: python 버전이 subject
和 issuer
를 오버로드용 매개변수로 허용한다는 것입니다. Go 버전은 그렇지 않습니다.
구현 차이점은 다음과 같습니다.
x509v3_ext_nconf
x509v3_ext_conf_nid
전화가 왔습니다.
두 기능 모두 github에서 찾을 수 있습니다. ca 서명과 함께 openspacemonkey/go-openssl을 사용할 때 스키드 확장을 추가할 수 없는 것 같습니다.
유일한 방법은 c 바인딩을 수동으로 사용하고 "파이썬처럼 수행"하는 것입니다.
skid 및 Authoritykeyidentifier를 추가하는 영리한 해결 방법을 구현했습니다. 생성된 인증서가 유효합니다. 그러나 certificate
结构体的 x *c.x509
멤버는 내보내지지 않으므로 해당 멤버에 액세스하는 유일한 방법은 안전하지 않은 포인터와 캐스트를 통해서입니다.
이는 권장되는 접근 방식은 아니지만 spacemonkey/go
업데이트가 나올 때까지 수행할 수 있는 방법입니다(언젠가 일어날지는 의문입니다).
위 내용은 인증서에 서명하면 인증 키 식별자가 SKID에 복사됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!