Windows 서버의 전체 인증서 체인 및 개인 키를 사용하여 설치된 컴퓨터 인증서를 원격으로 내보낼 수 있어야 합니다. 인증서는 IIS에 사용되며 동일한 서버에서 실행되는 Apache 인스턴스에 사용하고 싶습니다.
certmgr.MSC mmc 스냅인 도구를 사용하여 수동으로 이 작업을 수행하는 방법을 알고 있지만 명령줄이나 동일한 도메인의 원격 시스템에서 이 작업을 어떻게 수행할 수 있습니까?
으로 인증서만 보는 방법도 알고 있습니다 openssl s-client
. Java 키 저장소 파일로 가져오기 위해 인증서와 개인 키를 모두 저장하는 데 사용할 수 있습니까?
RDP를 통한 Certmgr이 필요한 것보다 너무 느립니다. 스크립팅 솔루션이 필요합니다.
내 환경은 전부윈도우 서버 2008R2. PowerShell 원격 기능이 켜져 있지 않지만 설정할 수 있습니다.
PowerShell Export-PfxCertificate
내 서버가 충분히 새롭지 않기 때문에 을(를) 사용할 수 없음을 확인했습니다 ...
따라서 PowerShell을 사용하여 원하는 인증서의 지문을 얻을 수 있으면 이를 "certutil -exportpfx" 명령에 제공할 수 있습니다. 나는 그것이 효과가 있음을 확인했습니다.
내가 어떻게 할디렉토리"dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | "와 같은 인증서 저장소를 만든 다음 지문을 사용하여 certutil 내보내기에 제공하시겠습니까?
아니면 먼저 dir을 수행하고 전체가 아닌 지문만 인쇄하도록 지시할 수 있습니까? 그런 다음 이를 파일에 저장하고 파일을 읽어 certutil 명령을 만드시겠습니까?
답변1
스택 오버플로 질문을 참조하세요.PowerShell을 사용하여 IIS에서 인증서 내보내기.
대답이 효과가 있으면 다음을 사용하여 원격 서버에서 PowerShell 코드를 실행할 수 있습니다 PSRemoting
(Enter-PSSession또는호출 명령) 또는psexec.
"dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | "와 같이 인증서 저장소를 디렉터리로 지정하고 이를 지문과 함께 certutil 내보내기에 공급하는 방법을 아는 사람이 있습니까?
이것을 시도해보십시오. 나에게 효과적입니다.
Get-ChildItem -Path 'Cert:\localmachine\My' |
Where-Object { $_.hasPrivateKey } |
Foreach-Object {
&certutil.exe @('-exportpfx', '-p', 'secret', $_.Thumbprint, "$($_.Subject).pfx")
}
조심하세요Subject
때로는 파일 이름으로 사용할 수 없는 경우도 있습니다., 유니코드의 잘못된 외국어 문자로 인해 발생합니다.
답변2
Windows 서버의 긴 목록에서 원격으로 인증서를 내보내려면 PowerShell에서 이 작업을 수행합니다. $servers는 서버 목록입니다.
foreach ($server in $servers){
Invoke-command $server {
Get-ChildItem -Path 'Cert:\localmachine\My' |
Where-Object { $_.hasPrivateKey } |
Foreach-Object {&certutil.exe @('-exportpfx', '-f', '-p','your_password',$_.Thumbprint, "d:\$($_.Subject).pfx")}
}
Move-Item -Path \\$server\d$\*.pfx -Destination C:\$server.pfx -Force
}
Java keytool.exe를 사용하여 각 pfx 파일을 JKS 키 저장소 파일로 변환합니다. Keytool은 모든 Java 설치의 일부입니다. 이 작업은 로컬 컴퓨터에서 수행하거나 이미 Java가 설치된 경우 원격 서버에서 수행할 수 있습니다.
keytool.exe -importkeystore -srckeystore C:\server1.pfx -destkeystore C:\server1.jks -srcstoretype pkcs12 -deststoretype JKS -srcstorepass your_password -deststorepass your_password
Powershell을 사용하여 이를 실행할 수도 있습니다($server는 서버 이름입니다)($pwd는 파일을 암호화하는 데 사용하는 비밀번호를 보유하는 변수입니다).
foreach ($server in $servers){
& "C:\Program Files\Java\jre6\bin\keytool.exe" -importkeystore -srckeystore C:\$server.pfx -destkeystore C:\$server.jks -srcstoretype pkcs12 -deststoretype JKS -srcstorepass $pwd -deststorepass $pwd
}
답변3
- 관리자로 mmc 열기
- 메뉴파일-> 스냅인 추가/제거( Ctrl+ M)
- 선택인증서왼쪽 창에서 스냅인을 누르고추가하다
- 선택하다컴퓨터 계정(세 번째 옵션)
- 선택하다다른 컴퓨터인증서를 관리하려는 원격 시스템의 이름을 입력하세요.
- 대화 상자를 완료하고 확인을 누르십시오.
이름은 약간 다를 수 있습니다. 제 OS가 독일어라서 대충 다 번역했습니다.