localhost에 대한 신뢰할 수있는 자체 서명 된 SSL 인증서 생성 (Express / Node와 함께 사용)


130

localhost와 함께 사용하기 위해 자체 서명 된 인증서를 만드는 데 대한 다양한 지침을 따르려고 시도하면서 대부분의 지침은 IIS 용으로 보이지만 Nodejs / Express를 사용하려고합니다. 인증서가 설치되는 동안 신뢰할 수 없기 때문에 제대로 작동하지 않습니다. 실패한 시도는 다음과 같습니다.

누군가이 작업을 수행 할 수있는 워크 플로를 제공 할 수 있습니까? 인증서를 설치할있지만 크롬 (v32) 또는 IE (v10)에서 인증서를 신뢰할 수 없습니다.

편집 : 문제가 신뢰할 수있는 cert-root가 아니라는 의견에 제안되었습니다. IE를 통해 인증서를 설치했지만 여전히 신뢰할 수 없습니다.


자체 서명 된 인증서는 웹 브라우저에서 신뢰할 수 없습니다. 신뢰할 수있는 서명 기관에서 서명하지 않았습니다.

1
이는 사실이 아닙니다. 루트 인증서를 설치하여 자체 서명 된 인증서를 신뢰할 수 있습니다. 그러나 나는 이것을 제대로 할 수없는 것 같다. IE (크롬이 아님)에 인증서 체인을 설치할 수 있다는 것을 읽었으므로 시도했지만 여전히 인식되지 않습니다. 나는 그것이 localhost가 특별하기 때문인지 또는 자체 서명 인증서가 정확하지 않은지 모르겠습니다.
JasonS 2014 년

3
Chrome과 같은 브라우저에서 작동하는 자체 서명 인증서를받지 못했습니다. 해결 방법은 다음과 같습니다. 127.0.0.1 (localhost)을 가리키는 local.MYDOMAIN.com에 대한 DNS 항목을 만든 다음 프로덕션 인증서를 사용합니다. 이 있는지 등을 생산 인증서 체인에 문제 만들기의 추가 혜택이없는 한
JasonS

답변:


86

위의 답변은 부분적이었습니다. 나는이 일을하는 데 너무 많은 시간을 보냈다. 그것은 미쳤다. 내 미래에 대한 참고 사항은 다음과 같습니다.

저는 Windows 10에서 Chrome 65로 작업하고 있습니다. Firefox는 잘 작동합니다. localhost를 보안 예외로 확인하면 작동합니다. Chrome은 다음을 수행하지 않습니다.

1 단계. 백엔드에서라는 폴더를 만듭니다 security. 우리는 그 안에서 일할 것입니다.

2 단계.req.cnf 다음 콘텐츠로 이름이 지정된 요청 구성 파일을 만듭니다 (크레딧은 @Anshul로 이동 ).

req.cnf :

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = Country initials like US, RO, GE
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost

이 필드에 대한 설명은 여기에 있습니다 .

3 단계 . 터미널의 보안 폴더로 이동하여 다음 명령을 입력합니다.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256

4 단계 :security 폴더 외부 에서 익스프레스 앱에서 다음과 같이합니다. (크레딧은 @Diego Mello로 이동)

backend 
 /security
 /server.js

server.js :

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
    res.send("IT'S WORKING!")
})

const httpsOptions = {
    key: fs.readFileSync('./security/cert.key'),
    cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
    .listen(port, () => {
        console.log('server running at ' + port)
    })

단계 5. 서버를 시작하고 https : // localhost : 3000으로node server.js 이동합니다 . .

이 시점에서 서버 설정이 있습니다. 그러나 브라우저에 경고 메시지가 표시되어야합니다.

자체 서명 된 인증서를 chrome / windows 인증서 저장소에 CA에서 신뢰할 수있는 인증 기관으로 등록해야합니다.(크롬은 이것을 Windows에도 저장합니다.)

6 단계. Chrome에서 Dev Tools를 열고 보안 패널로 이동 한 다음 인증서보기를 클릭합니다. 여기에 이미지 설명 입력

단계 7. 세부 정보 패널로 이동하여 파일 복사를 클릭 한 다음 인증서 내보내기 마법사가 나타나면 아래와 같이 다음을 클릭합니다.

세부 정보로 이동-파일 복사-다음 내보내기 마법사

8 단계. DER 인코딩을 그대로두고 다음을 클릭 한 다음을 선택 Browse하고 데스크톱과 같이 액세스하기 쉬운 폴더에 넣고 인증서 이름을 지정합니다.localhost.cer, then click Save and then Finish. . 데스크톱에서 인증서를 볼 수 있어야합니다.

단계 9.chrome://settings/ URL 상자에 삽입하여 엽니 다 . 아래에서을 클릭 Advanced / Advanced Options한 다음 아래로 스크롤하여을 찾습니다 Manage Certificates.

인증서 관리 선택

10 단계. 신뢰할 수있는 루트 인증 기관 패널로 이동하고 가져 오기를 클릭합니다.

신뢰할 수있는 루트 인증 기관 패널로 이동하여 가져 오기를 클릭하십시오.

localhost.cer8 단계에서 방금 내보내기를 마친 인증서 를 가져옵니다 .

단계 11. 찾아보기를 클릭하고을 찾은 localhost.cer다음 기본값을 그대로두고 다음을 여러 번 클릭합니다.이 경고가 나타날 때까지 예를 클릭합니다.

보안 예외 확인

12 단계. 모든 것을 닫고 Chrome을 다시 시작합니다. 그런 다음 https://localhost:3000가면 다음이 표시됩니다. 녹색을 사랑해야 해


안녕하세요. 모든 단계를 완료하면 https://localhost:3000Chrome이로드 중 멈 춥니 다. 누구든지 이유가 무엇인지 알 수 있습니까?
co.zohar

@ co.zohar 콘솔에 메시지가 있습니까? 눌러 crl+shift+i또는 F12콘솔을 엽니 다.
AIon

1
네트워크에 주소를이 일을하고 있다면 나는 발견과 같은 호스트 이름으로 인증서 DNS를 설정 : DNS.1 = server.local 예를 들어 호스트 이름 서버의 IP 주소를 가리 키도록 그런 다음 연결 시스템 업데이트에 HOSTS 파일 : 192.168.0.50 server.local이 의지 인증서와 주소가 일치하도록 허용하고 인증서를 확인합니다.
roskelld

@AI 콘솔에 아무것도 표시되지 않습니다. 페이지에 "Waiting for localhost ..."만 표시됩니다. 호스트 파일에서 구성한 것이 있습니까?
co.zohar 2010 년

1
내 질문에 대한 반 답변을 찾았습니다. 예를 들어 CN 및 DNS.1을 "local.com"과 같은 것으로 변경하고 서버에 액세스해야하는 각 컴퓨터에서 etc / hosts 파일을 로컬을 가리 키도록 변경합니다. .com을 서버의 IP에 연결하면 작동합니다.
TKoL

111

최단 방법. MacOS에서 테스트되었지만 다른 OS에서도 유사하게 작동 할 수 있습니다.

PEM 생성

> openssl req -x509 -newkey rsa:2048 -keyout keytmp.pem -out cert.pem -days 365

> openssl rsa -in keytmp.pem -out key.pem

귀하의 익스프레스 서버

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
  res.send('WORKING!')
})

const httpsOptions = {
  key: fs.readFileSync('./key.pem'),
  cert: fs.readFileSync('./cert.pem')
}
const server = https.createServer(httpsOptions, app).listen(port, () => {
  console.log('server running at ' + port)
})
  • https://localhost:3000Chrome에서 열면 안전하지 않다는 것을 알 수 있습니다. 아직!
  • 개발자 도구> 보안> 인증서보기 : 이미지를 바탕 화면으로 끌어서 두 번 클릭합니다.
  • '추가'를 클릭하십시오.
  • 키 체인 접근에서 찾아 두 번 클릭하십시오.
  • '신뢰'를 확장하고 '이 인증서를 사용할 때'를 '항상 신뢰'로 변경합니다.
  • 인증하라는 메시지가 표시 될 수 있습니다.
  • 서버를 다시 시작하십시오.
  • 브라우저를 새로 고칩니다.
  • 즐겨! :)

1
Mac에서 수행하려는 경우 다른 링크가 있습니다 : certsimple.com/blog/localhost-ssl-fix .
John

아름다운! 이것은 효과가 있었다! 추가하고 싶습니다 : 여기에서 OpenSSL을 설치하십시오 : indy.fulgan.com/SSL/?C=M;O=A . 여기에서 .cnf 파일을 가져온 다음 여기에서 구성하십시오 : gist.githubusercontent.com/pandurang90/dbe6a67339747ef5bacf/raw/… 그리고 여기에서 openSSL을 구성하십시오 : stackoverflow.com/questions/7360602/…
Jose A

2
Chrome 58 이상에 추가하고 싶습니다. "주체 대체 이름 누락"오류가 표시됩니다. stackoverflow.com/a/42917227/1057052 . 자세한 도움말은 아래 답변을 확인하세요. stackoverflow.com/a/43666288/1057052 , stackoverflow.com/a/44398368/1057052
Jose A

14
Drag image to your desktop and double click it-> 내 바탕 화면에 아무것도 드래그 할 수없고 드래그 할 수 없습니다. image광석에 대해 정확히 무슨 말을하는 거죠?
AIon

7
Chrome에서 '주제 대체 이름 누락'문제를 해결하려면 openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650제안한 첫 번째 줄 대신 할 수 있습니다. 그리고 이것은 또한 과정에서 더 적은 질문을 할 것입니다 ...
Michael Litvin

78

openSSL을 사용하여 인증서를 생성 할 수 있습니다. 이것 좀보세요 .

노드 JS 익스프레스 서버에 HTTPS를 추가하려면 .key 및 .crt 파일이 필요합니다. 생성 한 후에는이 코드를 사용하여 HTTPS를 서버에 추가하십시오.

var https = require('https');
var fs = require('fs');
var express = require('express');

var options = {
    key: fs.readFileSync('/etc/apache2/ssl/server.key'),
    cert: fs.readFileSync('/etc/apache2/ssl/server.crt'),
    requestCert: false,
    rejectUnauthorized: false
};


var app = express();

var server = https.createServer(options, app).listen(3000, function(){
    console.log("server started at port 3000");
});

이것은 내 로컬 컴퓨터와 이것을 배포 한 서버에서 잘 작동합니다. 서버에있는 것은 goDaddy에서 구입했지만 localhost에는 자체 서명 된 인증서가 있습니다.

그러나 모든 브라우저에서 연결을 신뢰할 수 없다는 오류가 발생했습니다. 계속 하시겠습니까? 계속을 클릭하면 정상적으로 작동합니다.

누군가가 자체 서명 된 인증서로이 오류를 우회 한 적이 있다면 계몽하십시오.


9
귀하의 인증서는 여전히 신뢰할 수 없으므로 제가 설명하는 것과 동일한 문제가 있습니다. 웹 서비스를 제대로 테스트 / 디버그하려면 신뢰할 수 있어야합니다.
JasonS 2014 년

1
그렇다면이 인증서를 네트워크가 아닌 로컬 컴퓨터에서만 신뢰하도록 하시겠습니까?

1
답변 상단의 링크는 1024 비트 3DES 암호화를 권장합니다. 더 openssl genrsa -out key.pem 2048나은 키 를 사용 하는 것이 좋습니다.
steampowered a

3
귀하의 인증서는 여전히 신뢰할 수 없습니다.
Diego Mello

2
위의 익스프레스 코드는 github.com/FiloSottile/mkcert(openSSL 대신)를 사용하여 로컬 CA / 신뢰할 수있는 인증서를 생성합니다. 끝까지 녹색 막대.
som

11

localhost에 대한 SSL 인증서를 생성하는 방법 : 링크

openssl genrsa -des3 -out server.key 1024

여기 에 비밀번호 를 입력해야하며 다음 단계에서 다시 입력해야합니다.

openssl req -new -key server.key -out server.csr

"일반 이름"을 묻는 메시지가 표시되면 다음을 입력합니다. localhost

openssl x509 -req -days 1024 -in server.csr -signkey server.key -out server.crt

1
이 솔루션은 지난 2 시간 동안 인터넷을 샅샅이 뒤졌습니다. 우분투의 모든 사람을 위해 이동 cp server.crt /usr/local/share/ca-certificates/.하고 실행 sudo update-ca-certificates하면 localhost https 요청이 NodeJS 8 이상에서 작동합니다. 이드도 증가1024 to 2048
Salyangoz

6

나를 위해 일하는 것은 다음과 같습니다.

창문에

1) 이것을 % WINDIR % \ System32 \ drivers \ etc \ hosts 파일에 추가하십시오 : 127.0.0.1 localdev.YOURSITE.net (브라우저가 'localhost'에 문제가 있기 때문입니다 (교차 원본 스크립팅의 경우).

Windows Vista 및 Windows 7 Vista 및 Windows 7은 UAC (사용자 계정 컨트롤)를 사용하므로 메모장을 관리자 권한으로 실행해야합니다.

  1. 시작-> 모든 프로그램-> 보조 프로그램을 클릭합니다.

  2. 메모장을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택하십시오.

  3. "Windows에 권한이 필요합니다"UAC 창에서 계속을 클릭합니다.

  4. 메모장이 열리면 파일-> 열기를 클릭합니다.

  5. 파일 이름 필드에 C : \ Windows \ System32 \ Drivers \ etc \ hosts를 입력합니다.

  6. 열기 클릭

  7. 이것을 % WINDIR % \ System32 \ drivers \ etc \ hosts 파일에 추가하십시오 : 127.0.0.1 localdev.YOURSITE.net

  8. 저장

  9. 브라우저를 닫고 다시 시작하십시오.

Mac 또는 Linux :

  1. su권한으로 / etc / hosts 열기
  2. 더하다 127.0.0.1 localdev.YOURSITE.net
  3. 저장해

개발할 때 localhost 대신 localdev.YOURSITE.net을 사용하므로 IDE에서 실행 / 디버그 구성을 사용하는 경우 업데이트해야합니다.

cookiem을 만들 때 ".YOURSITE.net"을 cookiedomain (시작 부분에 점 포함)으로 사용하면 모든 하위 도메인에서 작동합니다.

2) 해당 localdev.url을 사용하여 인증서를 만듭니다.

팁 : Windows에서 인증서를 생성하는 데 문제가있는 경우 VirtualBox 또는 Vmware 시스템을 대신 사용하십시오.

3) http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/에 설명 된대로 인증서를 가져옵니다 .


안녕하세요 Troy, 공유해 주셔서 감사합니다. 이것이 작동하는지 여부에 대해 다른 사람이 언급해야합니다. 해결 방법 : 호스트 파일에 dev.phantomjscloud.com을 추가 한 다음 프로덕션 인증서를 사용했습니다. 그것은 당신이 당신의 개발 박스에서 당신의 생산 키를 사용하기를 원하는 경우에만 유용합니다. 그래서 다른 누군가가 확인할 수 있다면 당신의 솔루션이 여전히 유효 할 것이라고 생각합니다
JasonS

저와 제 팀은 여러 가지 방식으로 로컬에서 로컬 서버로 보안하여 로컬에서 프로덕션 서버로 보안을 유지합니다.
TroyWorks

Windows의 경우 git bash 콘솔은 여기 에서 openssl 명령을 사용하여 훌륭하게 작동 합니다 . 루트 인증서를 설치하기 만하면 원하는 경우 서명 된 여러 사이트 별 인증서를 만들 수 있습니다.
Jason Goemaat

6

@FiloSottile 의 Mkcert는이 프로세스를 매우 간단하게 만듭니다.

  1. mkcert 설치 , macOS / Windows / Linux에 대한 지침이 있습니다.
  2. mkcert -install 로컬 CA를 만들려면
  3. mkcert localhost 127.0.0.1 ::1 현재 디렉토리에서 localhost에 대한 신뢰할 수있는 인증서를 만들려면
  4. 노드 (시스템 루트 저장소를 사용하지 않음)를 사용하고 있으므로 환경 변수에 CA를 명시 적으로 지정 해야 합니다. 예 :export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
  5. 마지막으로 다양한 다른 답변 (예 : 아래)에 설명 된 설정을 사용하여 익스프레스 서버를 실행합니다.
  6. 팔. localhost의 녹색 수영.

기본 노드 설정 :

const https = require('https');
const fs = require('fs');
const express = require('express');

const app = express();    
const server = https.createServer({
    key: fs.readFileSync('/XXX/localhost+2-key.pem'), // where's me key?
    cert: fs.readFileSync('/XXX/localhost+2.pem'), // where's me cert?
    requestCert: false,
    rejectUnauthorized: false,
}, app).listen(10443); // get creative

크게 작동합니다! 이 방법을 사용하면 자체 서명 된 인증서를 chrome / windows 인증서 저장소에 CA에서 신뢰할 수있는 인증 기관으로 등록 할 필요가 없습니다. 다른 답변에서 언급했듯이.
zaheer

4

OSX / Chrome을 사용하는 경우 http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and에 설명 된대로 자체 서명 된 SSL 인증서를 시스템 키 체인에 추가 할 수 있습니다 . -자체 서명 SSL 인증서

수동 프로세스이지만 마침내 작동하게되었습니다. CN (일반 이름)이 "localhost"(포트 없음)로 설정되어 있는지 확인하고 인증서가 추가 된 후 인증서의 모든 신뢰 옵션이 "항상 신뢰"로 설정되어 있는지 확인하십시오. 또한 "로그인"키 체인이 아닌 "시스템"키 체인에 추가해야합니다.


그는 IE를 언급하는데, 이는 그가 Windows를 사용하고 있음을 의미합니다.
2 비트

3

node를 사용하는 경우 node로 생성하지 않는 이유는 무엇입니까? 이 모듈은 매우 완전한 기능을 갖춘 것 같습니다.

나는 즉석에서 생성하지 않을 것입니다. 일관된 인증서와 키를 갖도록 일종의 빌드 스크립트로 생성하십시오. 그렇지 않으면 새로 생성 된 자체 서명 된 인증서를 매번 인증해야합니다.


3

게시 된 답변 중 일부에는이 문제를 극복하는 데 매우 유용한 부분이 있습니다. 그러나 나는 또한 최소 단계 수에 이상적으로는 OpenSSL (Windows 10에서)을 피했습니다.

따라서 답변에서 한 가지 중요한 부분 ( 출처 : @ TroyWorks ) 는 HOSTS 파일을 편집하여 가상 서버를 만들고이를 127.0.0.1에 매핑해야한다는 것입니다. 이것은 당신이 지역 개발을 할 것이라고 가정합니다.

제 경우에는 SS 인증서를 사용하여 NodeJS에서 웹 소켓을 보호했고 해당 소켓은 (브라우저를 통하지 않고) 프로그래밍 방식으로 연결되었습니다. 그래서 저에게는 경고 나 오류없이 인증서를 수락하는 것이 중요했고, 중요한 부분은 적절한 CN으로 인증서를 생성하는 것이 었습니다 (물론 답변의 다른 곳에 설명 된대로 신뢰할 수있는 기관에 인증서를 수락). . IIS를 사용하여 자체 서명 된 인증서를 생성하면 적절한 CN이 생성되지 않으므로 Powershell을 사용하여 다음과 같은 간단한 명령을 발견했습니다 .

New-SelfSignedCertificate -DnsName "gandalf.dummy.dev" -FriendlyName "gandalf" -CertStoreLocation "cert:\LocalMachine\My"

PS 관리 콘솔에서 실행해야하지만 간단하게 작동하며 인증서를 LocalMachine 인증서 저장소의 "개인"섹션에 저장합니다. 다음을 실행하여 생성되었는지 확인할 수 있습니다.

ls cert:\LocalMachine\My 

이를 신뢰하려면 인증서 관리자를 사용하여 이것을 복사하여 "신뢰할 수있는 루트 인증 기관"에 붙여 넣으십시오 (현재 사용자가 아닌 로컬 컴퓨터 인증서를보고 있는지 확인하십시오!).

IIS에서이 인증서에 바인딩하면 https://gandalf.dummy.dev/ 를 누르고 경고없이 보안 연결을 얻을 수 있습니다.

NodeJS에서 이것을 사용하는 마지막 부분은 위에 설명되어 있으며 다른 SO 답변에 설명되어 있으므로 Windows에서만 추가 할 것입니다. 인증서와 개인 키를 결합한 pfx 파일로 작업하는 것이 더 쉽습니다. 인증서 관리자에서 pfx를 쉽게 내보낼 수 있지만 NodeJS에서 사용하는 방법에 영향을줍니다. 'https'모듈을 사용하여 서버를 인스턴스화 할 때 사용할 옵션 ( 'key'및 'cert'대신)은 다음과 같이 'pfx'및 'passphrase'입니다.

var https = require('https');
var options = { 
    pfx: fs.readFileSync('mypfxfile'), 
    passphrase: 'foo' 
};
var server = https.createServer(options);

2

Windows에서 MMC (시작> 실행> mmc)를 사용하여 신뢰할 수있는 iis 개발 인증서를 만든 다음 인증서 스냅인을 추가하고 "로컬 컴퓨터"를 선택하고 기본값을 수락했습니다. 해당 인증서 snapip이 추가되면 로컬 컴퓨터 인증서 트리를 확장하여 개인 아래를 찾고 localhost 인증서를 선택한 다음 마우스 오른쪽 버튼으로 클릭> 모든 작업> 내보내기를 수행합니다. 내보내기 마법사에서 모든 기본값을 적용합니다.

해당 파일이 저장되면 신뢰할 수있는 인증서를 확장하고 방금 내 보낸 인증서 가져 오기를 시작합니다. https://localhost이제 보안 경고가없는 크롬에서 신뢰됩니다.

나는 MSDN 블로그 의이 가이드 해결책 # 2 를 사용했고, 운영자는 또한 MMC를 사용해야한다는 그의 질문에 대한 링크를 공유했지만 이것은 나를 위해 일했습니다. 해상도 # 2


2

이동 : chrome://flags/

활성화 : localhost에서로드 된 리소스에 대해 잘못된 인증서를 허용합니다.

녹색 보안은 없지만 Chrome에서 항상 https : // localhost 를 사용할 수 있습니다.


2

이것에 더 많은 측면이 있습니다.

자체 서명 여부에 관계없이 인증서를 사용하여 TLS (일부는 계속 SSL이라고 함)를 달성 할 수 있습니다.

자체 서명 된 인증서에 대한 녹색 막대를 가지려면 인증 기관 (CA)이되어야합니다. 이 측면은 로컬 개발 설정에서 녹색 막대를 달성하기위한 여정에서 찾은 대부분의 리소스에서 누락되었습니다. CA가되는 것은 인증서를 만드는 것만 큼 쉽습니다.

이 리소스는 CA 인증서와 서버 인증서의 생성을 모두 다루며 로컬 호스트 Chrome, Firefox 및 Edge에 녹색 막대를 표시하는 설정으로 이어졌습니다. https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58

참고 : Chrome에서는 신뢰할 수있는 기관에 CA 인증서를 추가해야합니다.


0

@alon의 세부 단계보다 한 단계 더 나아가 자체 서명 된 CA를 만들어야하는 경우 :

https.createServer({
  key: fs.readFileSync(NODE_SSL_KEY),
  cert: fs.readFileSync(NODE_SSL_CERT),
  ca: fs.readFileSync(NODE_SSL_CA),
}, app).listen(PORT, () => {});

package.json

"setup:https": "openssl genrsa -out src/server/ssl/localhost.key 2048
&& openssl req -new -x509 -key src/server/ssl/localhost.key -out src/server/ssl/localhost.crt -config src/server/ssl/localhost.cnf
&& openssl req -new -out src/server/ssl/localhost.csr -config src/server/ssl/localhost.cnf
&& openssl x509 -req -in src/server/ssl/localhost.csr -CA src/server/ssl/localhost.crt -CAkey src/server/ssl/localhost.key -CAcreateserial -out src/server/ssl/ca.crt",

설명 된대로 localhost.cnf 사용 :

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = UK
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.