태그 보관물: certificate

certificate

기존 CSR (인증서 서명 요청)에 SAN (주체 대체 이름) 추가 있습니다. 배경 : HP

누구든지 기존 CSR에 여러 주제 대체 이름을 추가하는 방법을 알려줄 수 있습니까?

서명 시간에 SAN을 사용하여 CSR을 생성하거나 SAN을 추가하는 것에 대해서는 이야기하지 않습니다.이 두 가지를 모두 수행하는 방법을 알고 있습니다.

배경 : HP 블레이드 섀시는 CSR을 생성 할 수 있지만 단일 SAN 만 허용한다는 문제가 있습니다. 블레이드 섀시에 키를 업로드 할 방법이 없기 때문에 결과 인증서를 사용할 수 없으므로 다른 곳에서 생성 된 CSR을 사용할 수 없습니다.

CA의 표준 프로세스는 SAN 추가 시간을 허용하지 않습니다. 그들은 기꺼이 실험하려고하지만, 우리가 끝날 때 해결책을 찾으려고 노력하고 있습니다. 이것은 우리가 비표준 프로세스를 사용해야하는 경우 내 경험에 비표준 프로세스를 사용해야한다는 것을 의미합니다. 인생은 결국 어려워 질 것입니다. 예 : 비표준 절차를 알고있는 직원이 휴가 등으로 인해 부재하는 경우

현재 방법은 웹 GUI를 통해 블레이드 섀시 온보드 관리자에 연결하고 단일 CN으로 CSR을 생성하는 것입니다.

웹 GUI는 CSR에서 단일 SAN 만 허용합니다.

그런 다음 openssl 구성에서 다음 스탠자로 자체 서명합니다.

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

결과 인증서에는 추가 SAN이 있습니다.



답변

섀시가 SAN 추가를 지원하지 않는 경우 키를 섀시에서 꺼내고 openssl을 사용하여 CSR을 생성해야합니다.

섹션 req_extensions = v3_req에서 주석 처리가 제거 되었는지 확인하십시오 [ req ].

추가 subjectAltName받는 [ v3_req ]부분.

새로운 CSR을 생성하십시오.

openssl req -new -key extracted_c7000.key -out your_new.csr

기존 CSR을 편집 할 수 없습니다.


답변

중요 사항 :이 모든 것은 다소 추측 적이므로 코드에 깊고 내가 말하는 것에 동의하지 않으면 코드를 믿으십시오. 저는 CA 전문가가 아니며 TV에서 하나만 재생합니다. 그것은 말했다 :

CSR의 기능으로는 힘들 것입니다. 프로그래밍 방식으로 CSR을 생성하는 마지막 단계는 생성 한 모든 항목을 해시 한 다음 개인 키로 서명하는 것입니다. 따라서 CSR 텍스트에 이러한 특성을 추가 할 수 있지만 서명은 내용과 일치하지 않으므로 서명하지 않습니다.

그러나 귀하의 경우, 귀하는 CA를 통제하거나 적어도 접촉하고 있습니다. 이것은 두 가지 옵션을 제공합니다.

  1. CSR에서 서명을 무시하고 인증서를 발급하도록 CA에 지시 할 수 있습니다.
  2. 요청한 것과 다른 인증서를 CA가 발급하도록 할 수 있습니다 (예 : 속성 추가).

이 중 # 1이 가장 쉬운 것 같습니다. 이를 위해 OpenSSL에서 변조 방지 기능을 해제해야하지만 약간 더 쉬운 기능이 있습니다. asn1parse부터 시작하여 CSR을 분리하는 방법을 보여줍니다.


답변

개인 키 사본을 얻을 수 있으면 cakemox의 대답이 가장 쉬운 방법이지만 기본적으로 “등록 에이전트”인증서를 사용하여 CSR에 다시 서명 할 수없는 경우 다른 방법이 있습니다.

css-security.com 블로그 게시물 에는 모든 세부 사항이 있습니다. 그러나 프로세스의 개요는 다음과 같습니다.

  • 등록 에이전트 인증서 획득
  • 발급을 위해 EA 인증서를 요구하도록 SSL 인증서 템플릿 수정
  • SAN 정보가 필요한 CSR 획득
  • SAN 정보를 추가하는 동안 EA 인증서를 사용하여 CSR에 서명

개인적으로 시도했을 때 인증서 템플릿 수정에 대한 부분을 건너 뛰었습니다. 직접 등록 에이전트 인증서를 생성 할 수 있다고 가정하면 실제 프로세스는 다음과 같습니다.

SAN 확장 정보가있는 san.inf를 작성하십시오.

[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"

요청을 다시 서명하십시오

certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr

수정 된 요청 제출

certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr

그리고 발급 과정에서 정상적으로 진행됩니다.


답변