programing

윈도우즈 10 이하에서 개발할 도메인 이름에 대한 자체 서명 인증서를 생성하는 방법은 무엇입니까?

lastmemo 2023. 5. 11. 23:55
반응형

윈도우즈 10 이하에서 개발할 도메인 이름에 대한 자체 서명 인증서를 생성하는 방법은 무엇입니까?

있습니다subdomain.example.com개발 목적으로 사용합니다.내 웹 애플리케이션 솔루션에는 외부 시스템에서 호출해야 하는 웹 API 등이 포함되어 있으므로 localhost를 사용하지 않습니다.

의 "SSL"에 대한 합니다.subdomain.example.com개발 도메인 이름입니다.

http://technet.microsoft.com/en-us/library/cc753127(v=ws.10).aspx, 에 설명된 대로 자체 서명 인증서를 생성하려고 했지만 이 인증서는 localhost에서만 작동합니다.이 인증서를 내 목적에 맞게 사용할 수 있습니까? 아니면 개발 하위 도메인에 대한 자체 서명을 만들어야 합니까?개발 하위 도메인에 대한 자체 서명 인증서를 만들어야 하는 경우 이에 사용할 수 있는 유틸리티 또는 온라인 서비스(무료)는 무엇입니까?

PowerShell 사용

8 및 서버 R2 4 도및 8.1 윈즈서 2012 R2(PowerShell 4.0)를 할 수 .New-SelfSignedCertificatecdlet:

예:

New-SelfSignedCertificate -DnsName www.mydomain.example -CertStoreLocation cert:\LocalMachine\My

New-SelfSignedCertificate -DnsName subdomain.mydomain.example -CertStoreLocation cert:\LocalMachine\My

New-SelfSignedCertificate -DnsName *.mydomain.example -CertStoreLocation cert:\LocalMachine\My

IIS 관리자 사용

  1. IIS 관리자 시작
  2. 서버 수준의 IIS에서 서버 인증서를 선택합니다.
  3. 오른쪽 작업 아래에서 자체 서명된 인증서 생성을 선택합니다.
  4. "인증서에 대한 이름 지정"이 표시되는 경우 적절한 이름을 입력하여 참조하십시오.
    1. 예:www.domain.example또는subdomain.domain.example
  5. 그런 다음 왼쪽 목록에서 웹 사이트를 선택합니다.
  6. 오른쪽의 Actions(액션) 아래에서 Bindings(바인딩)
  7. 새 HTTPS 바인딩을 추가하고 방금 만든 인증서를 선택합니다(인증서가 와일드카드 인증서인 경우 호스트 이름을 지정해야 함).
  8. 확인을 클릭하고 테스트합니다.

IIS의 자체 서명 인증서 기능을 사용하면 인증서의 CN(공통 이름)을 설정할 수 없으므로 선택한 하위 도메인에 바인딩된 인증서를 만들 수 없습니다.

이 문제를 해결하는 한 가지 방법은 에 번들로 제공되는 makecert.exe를 사용하는 것입니다.Net 2.0 SDK. 내 서버의 위치:

C:\Program Files\Microsoft.Net\SDK\v2.0 64bit\Bin\makecert.exe

다음과 같이 서명 기관을 생성하여 LocalMachine 인증서 저장소에 저장할 수 있습니다(이러한 명령은 관리자 계정 또는 상승된 명령 프롬프트에서 실행되어야 합니다).

makecert.exe -n "CN=My Company Development Root CA,O=My Company,
 OU=Development,L=Wallkill,S=NY,C=US" -pe -ss Root -sr LocalMachine
 -sky exchange -m 120 -a sha1 -len 2048 -r

그런 다음 하위 도메인에 바인딩되고 새 기관에서 서명한 인증서를 만들 수 있습니다.

(-in 매개변수의 값은 위의 권한을 생성하는 데 사용된 CN 값과 같아야 합니다.)

makecert.exe -n "CN=subdomain.example.com" -pe -ss My -sr LocalMachine
 -sky exchange -m 120 -in "My Company Development Root CA" -is Root
 -ir LocalMachine -a sha1 -eku 1.3.6.1.5.5.7.3.1

그러면 Tom Hall의 게시물에 설명된 대로 인증서가 IIS 관리자에 나타나 사이트에 바인딩됩니다.

Mike O'Brien이 http://www.mikeobrien.net/blog/creating-self-signed-wildcard 에 훌륭한 블로그 글을 올린 것에 대해 이 솔루션에 대한 모든 찬사를 보냅니다.

저는 주어진 답변과 추가 리소스의 비트와 조각을 결합하여 Windows에서 자체 서명된 인증서를 통해 제 길을 가야 했습니다.여기에 저만의 (그리고 희망적으로 완전한) 워크스루가 있습니다.그것이 당신에게 나의 고통스러운 학습 곡선을 조금 덜어주기를 바랍니다.또한 사용자가 직접 인증서를 만들 때 조만간 나타날 관련 항목에 대한 정보도 포함되어 있습니다.

윈도우즈 10 이하에서 자체 서명된 인증서 생성

makecert.exe를 Microsoft에서 더 이상 사용하지 않습니다.
현대적인 방식은 Powershell 명령을 사용합니다.

Windows 10:

관리자 권한으로 Powershell 열기:

New-SelfSignedCertificate  -DnsName "*.dev.local", "dev.local", "localhost"  -CertStoreLocation cert:\LocalMachine\My  -FriendlyName "Dev Cert *.dev.local, dev.local, localhost"  -NotAfter (Get-Date).AddYears(15)

윈도우즈 8, 윈도우즈 서버 2012 R2:

Powershell -FriendlyName 는 -Not After 및매개에변가없수습니다이러한시스템의없습▁-다니에hellfriendlynot이매러.위의 명령줄에서 제거하기만 하면 됩니다.
관리자 권한으로 Powershell 열기:

New-SelfSignedCertificate  -DnsName "*.dev.local", "dev.local", "localhost"  -CertStoreLocation cert:\LocalMachine\My

또는 아래의 이전 Windows 버전에 대한 방법을 사용하여 Windows 10의 모든 기능을 사용하여 인증서를 생성할 수 있습니다.

이전 Windows 버전:

이전 Windows 버전에 대한 권장 사항은 Windows 10 컴퓨터에 인증서를 생성하여 에 내보내는 것입니다.mmc 인스턴스를 사용하는 PFX 파일(아래 "인증서 신뢰" 참조)을 이전 윈도우즈 OS가 있는 대상 시스템의 인증서 저장소로 가져옵니다.인증서를 가져오려면 마우스 오른쪽 단추로 클릭하지 마십시오.상황에 맞는 메뉴에 "인증서 가져오기" 항목이 있지만 Win Server 2008에서 이 항목을 사용하는 것은 모두 실패했습니다.대신 대상 시스템에서 다른 mmc 인스턴스를 열고 "인증서(로컬 컴퓨터) / 개인 / 인증서"로 이동한 다음 가운데 창을 마우스 오른쪽 단추로 클릭하고 모든 작업 → 가져오기를 선택합니다.

결과 인증서

의 두 모두 .localhost그리고.*.dev.local.
Win10 버전에는 추가로 15년의 실시간과 "Dev Cert *.dev.local, dev.local, localhost"라는 읽기 쉬운 표시 이름이 있습니다.

업데이트: 매개 변수에 호스트 이름 항목을 여러 개 제공하는 경우-DnsName(위에 표시된 것처럼) 이러한 항목 중 첫 번째 항목이 도메인의 제목(일명 공용 이름)이 됩니다.@BenSewards 덕분에 SAN(Subject Alternative Name).해 준 것은 @ (BenSewards @BenSewards 덕분입니다.)

생성 후 IIS의 HTTPS 바인딩에서 인증서를 즉시 사용할 수 있습니다(아래 지침).

인증서를 만든 컴퓨터에서 인증서 신뢰

새 인증서는 신뢰 체인의 일부가 아니므로 브라우저에서 신뢰할 수 없는 것으로 간주됩니다.이를 변경하려면 컴퓨터의 신뢰할 수 있는 루트 CA에 대한 인증서 저장소에 인증서를 복사합니다.

mmc.exe를 열고 파일 → 스냅인 추가/제거 → 왼쪽 열에서 "인증서" 선택 → 추가 → "컴퓨터 계정" 선택 → "다음" → "로컬 컴퓨터..→ 피니시 → OK

왼쪽 열에서 "인증서(로컬 컴퓨터)/개인/인증서"를 선택합니다.
새로 만든 인증서를 찾습니다(Win 10에서 "친근한 이름" 열이 도움이 될 수 있습니다).
이 인증서를 선택하고 Ctrl-C를 눌러 클립보드에 복사합니다.

왼쪽 열에서 "인증서(로컬 컴퓨터)/신뢰할 수 있는 루트 CA/인증서"를 선택합니다.
인증서를 이 저장소에 붙여넣으려면 Ctrl-V를 누릅니다.
인증서는 신뢰할 수 있는 루트 권한 목록에 나타나야 하며 이제 신뢰할 수 있는 것으로 간주됩니다.

인증서 신뢰(다른 컴퓨터에서)

다른 컴퓨터에서 동일한 인증서를 신뢰하려면 인증서를 만든 컴퓨터에서 내보내고 다른 컴퓨터로 가져와야 합니다.

MMC의 소스 시스템에서 인증서 → 모든 작업 → 내보내기를 마우스 오른쪽 버튼으로 클릭합니다.개인 키를 사용하지 않고 에 내보냅니다.DER 형식입니다.

그런 다음 결과 파일을 대상 컴퓨터에 복사하고 마우스 오른쪽 단추를 클릭하여 "로컬 컴퓨터/신뢰할 수 있는 루트 CA" 저장소에 인증서를 설치합니다.그런 다음 Windows 인증서 저장소를 사용하는 모든 응용 프로그램(예: Chrome 및 IE, Firefox 제외)이 사용자의 자체 서명 인증서를 신뢰해야 합니다.

IIS에서 사용

( 인증서를 생성한 컴퓨터로 돌아갑니다!)

Manager로 웹 사이트의 할 수 →→ https → 합니다. IIS 파일 이름은 다음과 같습니다. → 호스트 → https → 호스트 이름입니다.myname.dev.local(인증서는 다음 기간에만 유효합니다.*.dev.local을 선택하고 새 →를 합니다.

호스트에 추가

또한 호스트 이름을 C:에 추가합니다.\Windows\System32\drivers\etc\hosts:

127.0.0.1  myname.dev.local

행복해

이제 Chrome과 IE는 인증서를 신뢰할 수 있는 것으로 간주하고 웹 사이트를 열 때 로드해야 합니다.https://myname.dev.local.

Firefox는 자체 인증서 저장소를 유지 관리합니다.여기에 인증서를 추가하려면 FF에서 웹 사이트를 열고 FF에서 인증서에 대해 경고할 때 예외에 추가해야 합니다.

Edge 브라우저의 경우 더 많은 작업이 필요할 수 있습니다(자세한 내용은 아래 참조).

인증서 테스트

인증서를 테스트하려면 파이어폭스가 가장 좋은 선택입니다. (저도 크롬 팬보이지만 이 경우에는 FF가 더 좋습니다.)

이유는 다음과 같습니다.

  • Firefox는 시프트-재로드 시 제거되는 자체 SSL 캐시를 사용합니다.따라서 로컬 웹 사이트의 인증서에 대한 변경 사항은 FF의 경고에 즉시 반영되는 반면, 다른 브라우저는 Windows SSL 캐시를 다시 시작하거나 수동으로 삭제해야 할 수 있습니다.
  • 또한 FF는 인증서의 유효성을 확인할 수 있는 몇 가지 유용한 힌트를 제공합니다.FF에 인증서 경고가 표시되면 고급을 클릭합니다.FF는 텍스트 블록의 중앙 줄에 하나 이상의 가능한 경고가 포함된 짧은 텍스트 블록을 표시합니다.

인증서가 자체 서명되어 있으므로 신뢰할 수 없습니다.

이 경고는 정확합니다!위에서 설명한 것처럼 Firefox는 Windows 인증서 저장소를 사용하지 않으며 Firefox 내에서 이 인증서에 대한 예외를 추가하는 경우에만 이 인증서를 신뢰합니다.이 작업을 수행하기 위한 버튼은 경고 바로 아래에 있습니다.

인증서가 이름 ...에 대해 유효하지 않습니다.

이 경고는 당신이 잘못했다는 것을 보여줍니다.인증서의 (와일드카드) 도메인이 웹 사이트의 도메인과 일치하지 않습니다.웹 사이트의 (하위) 도메인을 변경하거나 일치하는 새 인증서를 발급하여 문제를 해결해야 합니다.실제로 인증서가 일치하지 않더라도 FF에서 예외를 추가할 수 있지만 크롬에서는 이러한 조합으로 녹색 자물쇠 기호를 얻을 수 없습니다.

Firefox는 만료된 인증서, 오래된 서명 알고리즘이 있는 인증서 등과 같이 이 위치에 이해하기 쉬운 다른 많은 경고를 표시할 수 있습니다.문제를 해결할 수 있는 수준의 피드백을 제공하는 다른 브라우저를 찾을 수 없었습니다.

개발할 도메인 패턴을 선택해야 합니까?

"New-Self SignedCertificate"를 했습니다.*.dev.local.

다음과 같이 생각할 수 있습니다.사용하지 않는 이유*.local?

: 할 수 없습니다.와일드카드 도메인으로 올바르지 않습니다.
와일드카드 인증서는 리터럴 2단계 도메인 이름 이상을 포함해야 합니다.별표(*)는 세 번째 레벨 이상에서만 사용할 수 있습니다.

양의도메입니다인식 .xyz.localHTTP에서 개발하고 인증서가 필요하지 않을 때는 괜찮습니다.그러나 HTTPS와 함께 해당 도메인 패턴을 사용하는 경우 시작하는 각 새 프로젝트에 대해 새 일치 인증서를 발급해야 합니다.양의도을보효로사용으 을 더 잘 합니다.xyz.dev.local는 다음과 같습니다.*.dev.local.

중요한 참고 사항:

  • 유효한 호스트 도메인은 문자 a ~ z, 숫자, 하이픈 및 점만 포함할 수 있습니다.밑줄은 사용할 수 없습니다!는 이 사항에 때 수 .motör_head.dev.local*.dev.local로 전환하면 그들이 준수할 것입니다.motoer-head.dev.local.
  • 인증서의 와일드카드는 도메인에서 하나의 레이블(= 두 점 사이의 섹션)과만 일치하며 그 이상은 일치하지 않습니다. *.dev.local 항목 냥myname.dev.local하지만 아닙니다.other.myname.dev.local!
  • 레벨 Multi-level 와일드카드*.*.dev.local인증서에서는 )을 사용할 수 없습니다.그렇게other.myname.dev.local할 수 .*.myname.dev.local따라서 4단계 도메인 부분은 사용하지 않는 것이 좋습니다.모든 변형을 3단계 부분에 넣으십시오.이렇게 하면 모든 개발 사이트에 대한 단일 인증서를 사용할 수 있습니다.

Edge의 문제

(이것은 이전 MS Edge 버전인 비크로뮴에 관한 것입니다.저는 이것이 새로운 크롬 버전에는 여전히 적용되지 않는다고 생각합니다.하지만 잘 모르겠어요.)

이는 자체 서명된 인증서에 대한 것이 아니라 전체 프로세스와 관련이 있습니다.
위의 단계를 수행한 후 열기 시 Edge에 콘텐츠가 표시되지 않을 수 있습니다.myname.dev.local.
그 이유는 "네트워크 격리"라고 불리는 현대 앱용 Windows 10의 네트워크 관리의 특징입니다.

이 문제를 해결하려면 관리자 권한으로 명령 프롬프트를 열고 다음 명령을 한 번 입력합니다.

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

Edge 및 네트워크 분리에 대한 자세한 내용은 https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/ 에서 확인할 수 있습니다.

특정 도메인에 대한 새 인증서를 만드는 방법

PowerShell ISE를 admin으로 열고 다음 명령을 실행합니다.

New-SelfSignedCertificate -DnsName *.mydomain.example, localhost -CertStoreLocation cert:\LocalMachine\My

새 인증서를 신뢰하는 방법

  • 을 엽니다.mmc.exe
  • 콘솔 루트 -> 인증서(로컬 컴퓨터) -> 개인으로 이동합니다.
  • 생성한 인증서를 선택하고 -> 모든 작업 -> 내보내기를 마우스 오른쪽 단추로 클릭한 후 내보내기 마법사에 따라 .pfx 파일을 만듭니다.
  • 콘솔 루트 -> 인증서 -> 신뢰할 수 있는 루트 인증 기관으로 이동하여 새 .pfx 파일을 가져옵니다.

인증서를 사이트에 바인딩하는 방법

  • IIS 관리자 열기
  • 사이트를 선택하고 오른쪽 창에서 사이트 편집 -> 바인딩을 선택합니다.
  • 올바른 호스트 이름과 새 인증서를 사용하여 새 HTTPS 바인딩 추가

IIS 8에서 호스팅되는 프로젝트에 SSL을 사용할 수 있도록 설정하려고 할 때 이와 같은 문제가 발생했습니다. 여기 블로그에 자세한 글을 올리지만 링크 답변을 드리고 싶지 않습니다.makecert 명령어로 여러 날 투쟁한 끝에 마침내 제가 사용한 도구는 OpenSSL이었습니다.인증서는 Debian에서 생성되지만 IIS 7과 8로 원활하게 가져올 수 있습니다.

OS와 호환되는 OpenSSL 이 구성 파일을 다운로드합니다.구성 파일을 OpenSSL의 기본 구성으로 설정합니다.

먼저 CA(인증 기관)의 개인 키와 인증서를 생성합니다.이 인증서는 인증서 요청(CSR)에 서명하기 위한 것입니다.

이 프로세스에 필요한 모든 필드를 완료해야 합니다.

  1. openssl req -new -x509 -days 3650 -extensions v3_ca -keyout root-cakey.pem -out root-cacert.pem -newkey rsa:4096

다음과 같은 기본 설정으로 구성 파일을 생성할 수 있습니다.이제 인증 기관으로 전송되는 파일인 인증서 요청을 생성합니다.

공통 이름은 사이트의 도메인을 설정해야 합니다(: public.organization.com ).

  1. openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096

이제 인증서 요청이 생성된 CA 인증서로 서명됩니다.

  1. openssl x509 -req -days 365 -CA root-cacert.pem -CAkey root-cakey.pem -CAcreateserial -in server-csr.pem -out server-cert.pem

생성된 인증서를 IIS로 가져올 수 있는 .pfx 파일로 내보내야 합니다.

  1. openssl pkcs12 -export -out server-cert.pfx -inkey server-key.pem -in server-cert.pem -certfile root-cacert.pem -name "Self Signed Server Certificate"

이 단계에서는 인증서 CA를 가져올 것입니다.

  1. 서버에서 CA 인증서를 신뢰할 수 있는 루트 인증 기관으로 가져와야 IIS가 인증서를 가져올 수 있습니다.IIS로 가져올 인증서가 CA의 인증서로 서명되었습니다.
  • 명령 프롬프트를 열고 mmc를 입력합니다.
  • 파일을 클릭합니다.
  • 스냅인 추가/제거...선택합니다.
  • 인증서를 두 번 클릭합니다.
  • 컴퓨터 계정 및 다음 ->선택합니다.
  • 로컬 컴퓨터 및 마침선택합니다.
  • .
  • 인증서 -> 신뢰할 수 있는 루트 인증 기관 -> 인증서로 이동한 후 인증서를 마우스 오른쪽 단추로 클릭하고 모든 작업 -> 가져오기...를 선택합니다.

여기에 이미지 설명 입력

  • 다음 -> 찾아보기...를 선택합니다.
  • root-cacert.pem 파일의 위치를 찾아보려면 모든 파일을 선택해야 합니다.
  • 다음을 클릭하고 모든 인증서를 다음 저장소에 배치를 선택합니다.신뢰할 수 있는 루트 인증 기관입니다.
  • Next and Finish를 클릭합니다.

여기에 이미지 설명 입력

이 단계에서 IIS는 인증서의 신뢰성을 신뢰합니다.

  1. 마지막 단계에서 인증서를 IIS로 가져오고 바인딩 사이트를 추가합니다.
  • IIS(인터넷 정보 서비스) 관리자를 열거inetmgron 명령 프롬프트를 입력한 후 서버 인증서로 이동합니다.
  • 가져오기...를 클릭합니다.
  • .pfx 파일의 경로, 암호 및 호스팅의 인증서 저장소 선택을 설정합니다.

여기에 이미지 설명 입력

  • 확인을 클릭합니다.

  • 이제 IIS 관리자의 사이트로 이동하여 바인딩...선택합니다. 바인딩을 추가합니다.

  • 바인딩 유형으로 https를 선택하면 가져온 인증서를 볼 수 있습니다.

  • OK(확인)를 클릭하면 모두 완료됩니다.

여기에 이미지 설명 입력

다른 옵션은 웹 사이트별로 도메인 이름을 지정할 수 있는 자체 서명 인증서를 만드는 것입니다.즉, 여러 도메인 이름에서 사용할 수 있습니다.

IIS 관리자

  1. 컴퓨터 이름 노드 클릭
  2. 서버 인증서 열기
  3. 작업 패널에서 '자체 서명 인증서 생성'을 선택합니다.
  4. '사용자 이름 지정...이름 지정 *Dev (유형 목록에서 '개인' 선택)
  5. 절약하다

IIS의 웹사이트에서...

  1. 바인딩 관리
  2. Https에 대한 새 바인딩 만들기
  3. 목록에서 자체 서명된 인증서 선택
  4. 도메인 이름 상자를 선택하면 도메인 이름을 입력할 수 있습니다.

여기에 이미지 설명 입력

자체 서명된 인증서를 생성하는 또 다른 쉬운 방법은 Jexus Manager를 사용하는 것입니다.

제수스 매니저

  1. [연결] 패널에서 서버 노드를 선택합니다.
  2. 가운데 패널에서 서버 인증서 아이콘을 눌러 관리 페이지를 엽니다.
  3. [수행] 패널에서 "자체 서명 인증서 생성..." 메뉴 항목을 클릭합니다.

https://docs.jexusmanager.com/tutorials/self-signed.html

언급URL : https://stackoverflow.com/questions/19441155/how-to-create-a-self-signed-certificate-for-a-domain-name-for-development-on-win

반응형