localhost에 대한 자체 서명 인증서를 작성하는 방법


133

localhost에서 https / SSL을 어떻게 사용합니까?에 설명 된 단계를 거쳤습니다 . 그러나 이것은 내 컴퓨터 이름에 자체 서명 된 인증서를 설정하고 https : // localhost 를 통해 탐색 할 때 IE 경고를받습니다.

이 경고를 피하기 위해 "localhost"에 대한 자체 서명 인증서를 작성하는 방법이 있습니까?


인증서를 CA로 설치 했습니까?
vcsjones

Win7에서 IIS에 자체 서명 인증서를 설치하는 프로세스를 따랐습니다. 그러나 "mymachinename"에 대한 인증서가 생성되고 "localhost"에 대한 인증서가 필요합니다.
chris

1
안녕하세요! makecert가 더 이상 사용되지 않으므로 Auri의 답변을 기본 답변으로 설정하십시오. 답변 링크 : stackoverflow.com/a/44164653/1461602
Tormod Haugene

답변:


81

이 게시물은 Windows 태그로 설정되어 있지만 OS X에서는 관련 질문에 대한 답변이 없습니다. OS X 에서 localhost에 대한 자체 서명 인증서를 작성하는 단계는 다음과 같습니다 .

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

에서 Keychain Access,이 새로운 로컬 호스트 인증서를 두 번 클릭합니다. "신뢰"옆의 화살표를 확장하고 "항상 신뢰"를 선택하십시오. Chrome과 Safari는 이제이 인증서를 신뢰해야합니다. 예를 들어 node.js와 함께이 인증서를 사용하려는 경우 :

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);

2
첫 번째 명령은 ssh-keygenopenssl 명령이기 때문에, 불필요한 또한 새로운 키 생성 (및 SSH 의해 생성 한 덮어 쓰기).
Félix Saparelli

7
또한 당신은 완전히 추가하여 프로세스를 자동화 할 수 있습니다 -subj '/CN=localhost'받는 openssl인수.
Félix Saparelli

8
OS X가 주변을 클릭하는 대신 명령 행에서 신뢰하도록하려면 다음을 수행하십시오.sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo

1
리눅스와도 관련이 있습니다. 고마워
Marcel

1
이 모든 단계를 수행 ERR_SSL_VERSION_OR_CIPHER_MISMATCH했으며 Chrome 60에서 Safari 10.1.2가 마음에 들지 않습니다.
styfle

61

이 질문에 태그가 붙어 IIS있고 신뢰할 수있는 인증서를 얻는 방법에 대한 좋은 대답을 찾을 수 없으므로 2 센트를 줄 것입니다.

먼저 PowerShell의 @AuriRahimzadeh 명령을 관리자로 사용하십시오.

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

이것은 좋지만 인증서를 신뢰할 수 없으며 다음과 같은 오류가 발생합니다. 에 설치되어 있지 않기 때문입니다 Trusted Root Certification Authorities.

여기에 이미지 설명을 입력하십시오

를 시작하여이 문제를 해결하십시오 mmc.exe.

그런 다음

파일-> 스냅인 추가 또는 제거-> 인증서-> 추가-> 컴퓨터 계정-> 로컬 컴퓨터. Finish를 클릭하십시오.

Personal폴더를 확장하면 localhost인증서 가 표시됩니다 .

여기에 이미지 설명을 입력하십시오

인증서를 Trusted Root Certification Authorities - Certificates폴더에 복사하십시오 .

마지막 단계는 열거 Internet Information Services (IIS) Manager나 간단히하는 것 inetmgr.exe입니다. 거기에서 사이트로 이동하여 Bindings...Add...또는을 선택하십시오 Edit.... https드롭 다운에서 인증서를 설정 하고 선택하십시오.

여기에 이미지 설명을 입력하십시오

귀하의 인증서는 이제 신뢰할 수 있습니다 :

여기에 이미지 설명을 입력하십시오


9
이것이 정답입니다! 효과가있다! 로컬 호스트와 신뢰할 수있는 인증서로 엉망인 경우. mmc 콘솔 및 IIS (최상위 관리 서버)를 통해 이전 로컬 호스트 인증서를 모두 제거하십시오.
Tuan Jinn

감사! 이 주제에 대한 SO 답변과 블로그 게시물이 너무 많지만 인증서 신뢰 문제에 대한 이야기는 거의 없습니다. 팁 : 기본 SSL 포트 443을 사용하지 않는 이유를 설명해야합니까? 이 포트는 종종 다른 프로세스에서 사용되기 때문입니다.
HoffZ

정말 좋은 대답이며 2020 년에 IIS에서 잘 작동합니다. 대단히 감사합니다!
alessandrocb

hosts 파일의 별명에도 적용
Zef

52

PowerShell을 사용하여 new-selfsignedcertificate cmdlet으로 자체 서명 된 인증서를 생성 할 수 있습니다.

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

참고 : makecert.exe는 더 이상 사용되지 않습니다.

Cmdlet 참조 : https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate


이것은 2017 년 현재의 해답입니다.
Tormod Haugene

1
결과 인증서를 설치하는 방법을 모르고 따르는 사람들을 위해이 비디오의 단계를 따르십시오. youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown-Cal

6
키 및 crt 파일은 어디에 저장됩니까?
woojoo666

1
@ woojoo666 -KeyLocation플래그로 위치를 지정할 수 있습니다.
hamid

46

이 문제에 대해 많은 시간을 보낸 후 IIS를 사용하여 자체 서명 인증서를 만드는 제안을 따를 때마다 발급 대상 및 발급 대상이 올바르지 않은 것을 알았습니다. SelfSSL.exe가이 문제를 해결하는 열쇠였습니다. 다음 웹 사이트는 자체 서명 된 인증서를 만드는 단계별 접근 방식을 제공했을뿐만 아니라 발급 및 문제 별 문제도 해결했습니다. 자체 서명 인증서를 만드는 데 가장 적합한 솔루션은 다음과 같습니다 . 비디오 형식으로 동일한 자습서를 보려면 여기를 클릭하십시오 .

SelfSSL의 샘플 사용은 다음과 같습니다.

SelfSSL /N:CN=YourWebsite.com / V : 1000 / S : 2

SelfSSL /? 설명과 함께 매개 변수 목록을 제공합니다.


RobBagby.com의 기사가 완벽하게 작동했습니다. 헨리를 잘 찾으십시오.
cymorg

메가! 그 비디오의 품질은 좋지 않지만 필요한 모든 것이 있습니다.
tonco

2
robbagby 사이트에 대한 링크가 종료되었습니다. CodeCowboyOrg의 고품질 YouTube 자습서 2 개에 대한 내 답변보기
Moses Machua

robbagby.com에있는 기사의 Wayback 아카이브 링크에 대한 답변을 수정했습니다.
Prometheus

23

당신이 갈 수있는 자체 서명 된 인증서를 만들려고한다면 http://localhost/mysite 여기에 그것을 만드는 방법이 있습니다

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

에서 http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200


2
내 인증서는 어디로 갔습니까 : o C : \ Windows \ system32에 없습니다
EaterOfCode

2
그런데 makecert.exe 도구는 향후 독자를 위해 Visual Studio 명령 프롬프트를 통해 사용됩니다. 인터넷 정보 서비스 (IIS) 리소스 키트 도구를 사용하고 SelfSSL 1.0을 설치할 수도 있습니다. microsoft.com/downloads/en/…
atconway

3
빠른 답변은 훌륭하지만 항상 도움이되는 것은 아닙니다. "인증서를 SSL 서버 인증서로 사용할 수 없습니다"는 IIS7에서 볼 수있는 오류입니다. Op는 또한 브라우저 경고에 대해 언급했으며 "인증서를 작성하는 방법"이 아닌가?
cmroanirgo

매개 변수 때문에 당신은 cert2spc 단계를 생략 할 수 pvk2pfx -spc 모두 수용 를 .spc 및 .CER
abatishchev을

1
@EaterOfCode 광산은 C : \ Windows \ SysWOW64에있었습니다
Bay Sola

10

자체 서명 인증서를 만들기위한 Pluralsight 도구를 추천합니다 : http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatically-in-net

인증서를 .pfx로 만들고 IIS로 가져옵니다. 신뢰할 수있는 루트 인증 기관으로 추가하십시오.


1
Pluralsight의 도구는 모든 종류의 PowerShell "매직"과 작동하지 않는 다른 것들을 시도한 후 약 30 초 만에 작동 스크립트를 생성했으며 피자를 먹는 데 걸리는 시간도 포함되었습니다 (+ 다운로드 및 도구를 추출하십시오. 이 오래된 랩톱에서 여전히 Windows 7을 실행하고 있기 때문에 이것은 나에게 완벽한 솔루션이었습니다. 감사합니다!
Ade

1

예, 아니오 자체 서명 된 인증서는 신뢰할 수있는 인증 기관에서 인증서에 서명하지 않았기 때문에 해당 경고 메시지가 표시됩니다. 로컬 컴퓨터에서이 경고를 제거하기 위해 고려할 수있는 몇 가지 옵션이 있습니다. 자세한 내용은이 질문에 대한 최고 답변을 참조하십시오.

자체 서명 된 인증서를 수락하려면 Internet Explorer 8을 사용하려면 어떻게해야합니까?

도움이 되었기를 바랍니다!


편집하다:

죄송합니다, 처음에 당신이 localhost에 제한되어 있다는 것을 알지 못했습니다. 아래 링크에서 "올바른 일반 이름으로 자체 서명 된 인증서 생성"에 대한 지시 사항을 따르십시오.

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html


아니요, URL ( localhost )이 시스템 이름으로 발행 된 인증서 이름과 일치하지 않기 때문에 경고 메시지가 표시 됩니다. mymachinename으로 전환 하면 오류가 발생하지 않습니다. 불행히도 질문에 영향을 미치지 않는 이유로 로컬 호스트를 사용해야하며 컴퓨터 이름은 사용하지 않아야합니다.
chris


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.