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.