Windows 2003 IIS 7.0 서버에서 SSL 인증서 중 하나 (단순 도메인 확인 만 해당)가 곧 만료됩니다.
다른 공급 업체로부터 더 나은 제안을 받았으며 원래 인증서를 발행 한 사람은 더 낮은 가격을 협상하고 싶지 않습니다.
어쨌든 IIS의 인증서 마법사를 통해 “갱신”또는 “제거”를 한 다음 새 인증서를 설치하는 옵션이 있습니다.
따라서 “갱신”옵션을 사용하여 인증서 요청을 작성하여 새 공급 업체에게 전달할 수 있습니까? 아니면 “신규”요청으로 시작해야합니까? 새로운 서명자가 다른 서명자가 이전 인증서를 발급 한 것이 중요합니까?
문제는 이전 인증서를 제거하고 새 CSR을 생성하여 서버를 보호하지 않고 새 인증서가 설치되기를 기다리는 것입니다.
또는 기존 인증서를 제거하지 않고 새 CSR을 준비하는 옵션이 있습니까?
답변
IIS 6.0을 사용하여 임시 웹 사이트 만 만들면됩니다. IIS 7.0을 사용하면 한 번에 여러 개의 보류중인 요청을 만들 수 있습니다.
IIS 7.0에는 실제로 갱신 기능이 매우 큰 키 (원하는 것보다 훨씬 큰 키)로 CSR을 생성하는 버그가 있습니다. 따라서 갱신 옵션을 선택하는 대신 보류중인 새 요청을 작성하는 것이 좋습니다. 일단 설치되면 웹 사이트에서 SSL 바인딩을 전환하기 만하면 다운 타임이 없습니다. 또한 갱신 할 때마다 새 키를 생성하여 보안을 강화할 수 있습니다.
인증서 공급자 (CA)는 새 옵션을 사용하는지 또는 갱신 옵션을 사용하는지 상관하지 않으며 동일한 CA를 유지하거나 새 CA에서 주문할 때 옵션을 사용할 수 있습니다.
답변
인증서를 갱신하면 인증서의 만료 날짜를 업데이트하면서 동일한 공개 키와 개인 키를 유지할 수 있습니다. 라우터 나 다른 곳에 지문을 저장해야하는 경우 이점이 있습니다. 요청을 갱신하려면 동일한 발급 CA가 필요하므로 손으로 새 요청을 생성하는 것이 더 쉬울 수 있습니다.
IIS를 가동시키지 않고 새 요청을 생성하려면
인증서 요청을 수동으로 작성하여 제출할 수 있습니다. 새 인증서를 받으면 IIS7이 찾고있는 인증서를 전환하면됩니다. 어떻게 수동으로 웹 서버 SSL 인증서를 만들 수 있습니다 .
프로세스의 간단한 요점은 필요한 정보를 가진 inf 파일을 작성하는 것 certreq -new file.inf file.req
입니다. 요청 파일이 있으면 인증서를 발급 할 CA에 요청 파일을 제출 한 후 명령으로 전송 한 공개 키를 승인 할 수 있습니다.certreq -accept file-from-ca.req
request.inf 예
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=fully.qualified.domain.name, OU=Organizational Unit, O=Company, L=City, S=State, C=Country"
KeySpec = 1
KeyLength = 2048
HashAlgorithm = SHA256
Exportable = FALSE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
RequestType = PKCS10
KeyUsage = 0xa0
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
FriendlyName = ""
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
[RequestAttributes]
CertificateTemplate = WebServer
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=&"
_continue_ = "DNS="
위의 예제 inf는 자체 CA에 내부적으로 사용하지만 대부분의 환경에서 작동하도록 조정할 수 있습니다. 당신은 설정할 수 있습니다Exportable
키를 보관하려면 TRUE로 . 이 FriendlyName
옵션은 선택 사항이며이 Extensions
섹션은 대체 DNS 이름 (주체 대체 이름)을 사용하기위한 것입니다.
SAN 항목의 예는 다음과 같습니다.
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"
그러면 이름이 일치하지 않는다고 불평하지 않고 위의 세 사이트에서 동일한 인증서를 사용할 수 있습니다 (현대 브라우저에서는 IE6이 이해하지 못한다고 생각합니다). SAN에 정규화 된 도메인 이름 (제목의 CN)을 포함시키는 것이 중요합니다. 여러 도메인 이름이 필요하지 않은 경우 확장 영역을 완전히 제거 할 수도 있습니다 (일부 CA는이를 지원하지 않을 수도 있음).
과정
위의 정보가 저장되면 (많은 정보입니다). 다음과 같이하세요:
- 명령 프롬프트를 열고 위의 inf를 저장 한 디렉토리로 cd하십시오.
- 운영
certreq -new above.inf request.req
- request.req 파일을 CA에 제출하십시오. 처리하고 승인 / 거부합니다.
- 승인하면 공개 키를 .cer 파일로 보내야합니다.
certreq -accept file-from-ca.cer
키 설정을 마치려면 실행하십시오 .
행운을 빕니다!
편집하다
certreq 및 inf 파일의 전체 구문은 부록 3 : Certreq.exe 구문 (Windows Server 2003 SP1) 에서 찾을 수 있습니다 . FriendlyName
및 HashAlgorithm
전용 서버 2008 (및 R2)이다. 명령을 실행하여 지원되는 암호화 제공자 목록을 볼 수 있습니다certutil -csplist
하고 출력을보고 . 현재 Windows 2003 SP2 상자에는 “Microsoft RSA SChannel Cryptographic Provider”가 사용 가능한 공급자로 표시되어 있으므로 파일에 따옴표가 올바르게 설정되어 있고 항목이 줄 바꿈 또는 여러 줄로되어 있지 않은지 확인하십시오.
ProviderName을 ProviderType으로 변경하고 출력에서 제공 한 숫자를 사용할 수도 있습니다. certreq -csplist
.
이 경우 다음과 같은 결과가 나타납니다.
Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12
그래서 둘 중 하나를 사용할 수 있습니다
ProvderName = "Microsoft RSA SChannel Cryptographic Provider"
또는
ProviderType = 12
답변
좋아, 부분적으로 내 자신의 질문에 대답하기 위해-기존 인증서를 제거하지 않고 (즉, 서버를 중지하지 않고) 새 인증서를 작성 / 사용하는 부분 으로 Comodo 웹 사이트 에서 좋은 설명 을 찾았습니다. 기본적으로 “임시”웹 사이트를 작성해야합니다. 서버에서이를 사용하여 새 CSR을 작성하고 서명을 위해 전송 한 후 인증서를 수신하고 가져옵니다.
그런 다음 기본 (실제) 사이트에서 현재 인증서를 교체 한 다음 임시 인증서를 삭제해야합니다.