programing

로컬 호스트에 대해 신뢰할 수 있는 자체 서명 SSL 인증서 생성(Express/Node와 함께 사용)

minimums 2023. 8. 31. 23:45
반응형

로컬 호스트에 대해 신뢰할 수 있는 자체 서명 SSL 인증서 생성(Express/Node와 함께 사용)

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

이를 수행할 수 있는 워크플로우를 제공할 수 있는 사람이 있습니까?인증서를 설치할 수 있지만 크롬(v32)이나 IE(v10)에서 인증서를 신뢰할 수 없습니다.

편집: 이 문제가 신뢰할 수 있는 인증서 루트가 아님을 설명합니다.IE를 통해 인증서를 설치했지만 아직도 신뢰가 되지 않습니다.

위의 답변은 부분적이었습니다.이 일을 하는데 너무 많은 시간을 들였어요. 미친 짓이에요.미래의 나에게 주의할 점은 다음과 같습니다.

저는 크롬 65를 사용하는 윈도우 10에서 일하고 있습니다.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에서 다음과 (), 당의익스앱다같은것을하세신요게음용은: (DiegoMello로 갑니다.)

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단계. 서버를 시작합니다.node server.jshttps://localhost:3000으로 이동합니다.

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

Chrome/Windows 인증서 저장소에 CA에서 신뢰할 수 있는 인증 기관으로 자체 서명된 인증서를 등록해야 합니다.(또한 창에 저장됩니다.)

6단계. Chrome에서 Dev Tools를 열고 Security 패널로 이동한 다음 View Certificate(인증서 보기)를 클릭합니다.

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

go to details - copy file - next on export wizard

8단계. DER 인코딩을 그대로 두고 다음을 클릭하고 선택합니다.Browse바탕 화면과 같은 접근하기 쉬운 폴더에 저장하고 인증서의 이름을 지정합니다.localhost.cer, then click Save and then Finish.바탕 화면에서 인증서를 볼 수 있어야 합니다.

9단계. 열기chrome://settings/URL 상자에 삽입합니다.아래에서 다음을 클릭합니다.Advanced / Advanced Options그런 다음 아래로 스크롤하여 검색합니다.Manage Certificates.

choose manage certificates

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

Go to Trusted Root Certification Authorities panel, and click import

는 다을가것다니입을 입니다.localhost.cer8단계에서 입니다.

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

confirm security exception

12단계. 모든 것을 닫고 크롬을 다시 시작합니다.그럼, 언제 갈 때.https://localhost:3000확인해야 합니다.

가장 짧은 길.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:3000Google Chrome에서 안전하지 않다는 것을 알 수 있습니다.아직!
  • 개발자 도구 > 보안 > 인증서 보기:이미지를 바탕 화면으로 끌어다 놓고 두 번 클릭합니다.
  • '추가' 클릭
  • Keychain Access에서 찾아 두 번 클릭합니다.
  • '신뢰'를 확장하고 '이 인증서를 사용할 때'를 '항상 신뢰'로 변경합니다.
  • 인증하라는 메시지가 표시될 수 있습니다.
  • 서버를 다시 시작합니다.
  • 브라우저를 새로 고칩니다.
  • 맛있게 드세요! :)

열어볼 수 있습니다.인증서를 생성하는 SSL입니다.이것 좀 보세요.

노드 JS express 서버에 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는 자체 서명된 인증서를 가지고 있었습니다.

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

자체 서명된 인증서로 이 오류를 우회한 적이 있는 사람이 있다면 알려주시기 바랍니다.

@FiloSottile의 Mkcert는 이 프로세스를 무한히 단순하게 만듭니다.

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

기본 노드 설정:

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

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

게시된 답변 중 일부는 이 문제를 극복하는 데에도 매우 유용한 내용을 담고 있습니다.그러나 최소한의 단계 수와 이상적으로 OpenSSL(Windows 10의 경우)을 피하는 것에도 관심이 있었습니다.

따라서 답변(credit: @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 관리 콘솔에서 실행해야 하지만 간단히 작동하며 로컬 시스템 인증서 저장소의 "개인" 섹션에 인증서를 넣습니다.다음을 실행하여 생성되었는지 확인할 수 있습니다.

ls cert:\LocalMachine\My 

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

IIS에서 이 인증서에 바인딩하는 경우 https://gandalf.dummy.dev/를 눌러 아무런 경고 없이 안전하게 연결할 수 있어야 합니다.

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

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

이것이 제가 할 수 있는 일입니다.

창문에.

%WINDIR%\에 추가합니다.System32\drivers\etc\hosts 파일: 127.0.0.1 localdev.YOURSITE.net (브라우저에 'localhost' 문제가 있기 때문입니다(원산지 간 스크립팅용).

Windows Vista(윈도우 비스타), Windows 7 Vista(윈도우 7 비스타) 및 Windows 7(윈도우 7)에서는 UAC(사용자 계정 컨트롤)를 사용하므로 메모장을 관리자 권한으로 실행해야 합니다.

  1. 시작 -> 모든 프로그램 -> 액세서리를 클릭합니다.

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

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

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

  5. 파일 이름 필드에 C:\Windows\시스템32\드라이버\etc\hosts

  6. 열기 클릭

  7. %WINDIR%\에 추가합니다.System32\drivers\etc\hosts 파일: 127.0.0.1 localdev.YOURSITE.net

  8. 절약하다

  9. 브라우저를 닫고 다시 시작합니다.

Mac 또는 Linux의 경우:

  1. /etc/hosts를 사용하여 /su
  2. 더하다127.0.0.1 localdev.YOURSITE.net
  3. 구하라

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

쿠키엠을 만들 때 쿠키 도메인으로 ".YOURSITE.net "을 사용하면 모든 하위 도메인에서 작동합니다.

해당 localdev.url을 사용하여 인증서 생성

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

에 설명된 대로 인증서 가져오기 http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

창의 경우 다음과 같은 간단한 단계를 수행합니다.

  1. 을 엽니다.Windows PowerShell,run as administrator
  2. Chocolatey 하이퍼링크를 클릭합니다.
  3. 사용하다choco install mkcertmkcert.
  4. 려달을 mkcert -install로컬 CA를 만듭니다.
  5. 려달을 mkcert localhost 127.0.0.1 ::1현재 디렉터리에 로컬 호스트에 대한 신뢰할 수 있는 인증서를 만듭니다.
  6. 된 를 사용합니다../localhost+2.pem그리고../localhost+2-key.pem서버에서 각각 인증서와 키로 표시됩니다. (서버마다 암호 키와 인증서가 다릅니다.)
  7. 마지막으로 다른 다양한 답변에 설명된 설정을 사용하여 서버를 실행합니다(Express 서버의 경우 아래에 나와 있습니다).
    const https = require('https');
    const fs = require('fs');
    const express = require('express');

    const app = express();


    app.get('/', function(req, res){
      res.send("HELLO!");
    });

    const server = https.createServer({
        key: fs.readFileSync('./localhost+2-key.pem'), // path to localhost+2-key.pem
        cert: fs.readFileSync('./localhost+2.pem'), // path to localhost+2.pem
        requestCert: false,
        rejectUnauthorized: false,
    }, app).listen(3000, function(){
      console.log("Successfully started server on port 3000");
    });

" 그다서실다니행합를"를 사용하여 합니다.node server.js

  1. 에서 브우저사용을 합니다.https://localhost:3000그러면 주소 표시줄에 자물쇠가 있는 것을 볼 수 있습니다.

맛있게 드세요!!

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

수동으로 진행하는 과정이지만, 드디어 작동하게 되었습니다.CN(공통 이름)이 "localhost"(포트 없음)로 설정되어 있는지 확인하고 인증서가 추가된 후 인증서의 모든 신뢰 옵션이 "항상 신뢰"로 설정되어 있는지 확인합니다.또한 "로그인" 키체인이 아닌 "시스템" 키체인에 추가해야 합니다.

이동 위치:chrome://flags/

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

녹색 보안은 없지만 크롬의 https://localhost는 항상 허용됩니다.

노드를 사용하고 있다면 노드로 생성하는 것이 어떻습니까?이 모듈은 기능이 매우 충실한 것 같습니다.

즉시 생성하지 않습니다.일종의 빌드 스크립트를 사용하여 생성하면 일관된 인증서와 키를 얻을 수 있습니다.그렇지 않으면 새로 생성된 자체 서명 인증서를 매번 인증해야 합니다.

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

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

저는 MSDN 블로그의 이 가이드 결의안 #2를 사용했고, op는 MMC를 사용해야 한다는 것에 대한 그의 질문에 링크를 공유했지만, 이것은 저에게 효과가 있었습니다. 결의안 #2

여기에는 더 많은 측면이 있습니다.

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

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

이 리소스에서는 CA 인증서와 서버 인증서를 모두 생성하는 작업을 다룹니다. 그 결과 로컬 호스트 Chrome, Firefox 및 Edge: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58 에 녹색 막대가 표시됩니다.

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

SMH, 적절한 문서가 부족하고 모든 사람이 IIS를 사용하지 않기 때문에 이 문제에 많은 시간을 허비했습니다.만약 다른 누군가가 여전히 이 문제에 집착한다면, 저는 이것이 도움이 되기를 바랍니다.

솔루션:Windows 10의 로컬 호스트에 대한 신뢰할 수 있는 자체 서명 SSL CERT

참고: SSL 인증서만 필요한 경우 인증 생성 섹션을 따릅니다.

스택: Azure Function App(Node.js), React.js - Windows 10

인증 작성

1단계 - 인증서 만들기: 열기Powershell다음을 실행합니다.

New-SelfSignedCertificate -NotBefore (Get-Date) -NotAfter (Get-Date).AddYears(5) `
-Subject "CN=localhost" -KeyAlgorithm "RSA" -KeyLength 2048 `
-HashAlgorithm "SHA256" -CertStoreLocation "Cert:\CurrentUser\My" `
-FriendlyName "HTTPS Development Certificate" `
-TextExtension @("2.5.29.19={text}","2.5.29.17={text}DNS=localhost")

2단계 - 인증서 복사:열다.Certificate ManagerWindows 키를 누르고 "사용자 인증서 관리"를 검색합니다.다으로로 합니다.Personal -> Certificates를 컬호인복를니다로 합니다.Trusted Root Certification Authorities -> Certificates

개인 -> 인증서

신뢰할 수 있는 루트 인증 기관 -> 인증서

(친한 이름은 HTTPS 개발 인증서가 될 것입니다)

내보내기 . 인증서 내보내기 right click cert -> All Tasks -> Export그러면 인증서 내보내기 마법사: 인증서 내보내기 마법사가 시작됩니다.

  • 다음 클릭
  • 를 선택합니다.Yes, export the private Key 키 -
  • 형식을 합니다.Personal Information Exchange - PKCS #12첫 번째 및 마지막 확인란을 선택한 상태로 둡니다.내보내기 포맷
  • 암호를 선택하고, 원하는 경우 간단한 것을 입력하십시오. "1111" 암호 입력
  • 파일을 기억할 위치에 저장합니다.데스크톱 또는 사이트(파일 이름을 development.pfx로 지정할 수 있음) 파일 저장

4단계. Chrome 다시 시작

Azure Function App(서버) - .PFX를 사용한 로컬 SSL

이 경우 SSL 인증서를 사용하여 Azure Function App을 실행합니다.

  • 내보낸 development.pfx 파일을 azure 함수 프로젝트 루트에 복사합니다.
  • 하여 app cmd 합니다.exe에서 다음을 실행하여 함수 앱을 시작합니다.func start --useHttps --cert development.pfx --password 1111"(다른 암호와 파일 이름을 사용한 경우스크립트값을 업데이트하는 것을 잊지 마십시오.)
  • :package.json함수 앱을 시작하는 스크립트:

앱 대응(클라이언트) - 로컬 SSL로 실행

을 로컬로 설치합니다. 하는 데 됩니다. 이는 다음을 변환하는 데 사용됩니다.development.pfxcert.pem그리고.server.key원본 - pfx를 pem 파일로 변환

  1. 리액트 앱 프로젝트 루트를 열고 특정 폴더를 만듭니다.project-root/cert)
  2. 의 .development.pfx파일을 인증서 폴더에 저장합니다. (project-root /cert/development.pfx)
  3. 인증서 디렉터리에서 명령 프롬프트를 열고 다음을 실행합니다.
  4. 를 certdevelopment.pfx를 cert.pem으로 합니다.openssl pkcs12 -in development.pfx -out cert.pem -nodes
  5. key.development.pfx에서 key.pem으로 합니다.openssl pkcs12 -in development.pfx -nocerts -out key.pem
  6. 키에서 : 추된개 키서암 호제거에인:openssl rsa -in key.pem -out server.key
  7. 를 합니다..env.development.local파일에 다음 행을 추가합니다.
SSL_CRT_FILE=cert.pem
SSL_KEY_FILE=server.key
  1. 앱 하기 ㅠㅠㅠㅠㅠnpm start

@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, () => {});

꾸러미제이손

"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

위의 @Alon 및 @Diego의 답변을 확인하려면 다음과 같이 수동 브라우저 단계 중 일부를 제거해야 합니다.

  1. 파일 ] 생성./req.cnf]:
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = NG
ST = Lagos
L = Ikeja
O = Acme
OU = Dev 
CN = localhost
[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
  1. [단말기에서 다음을 실행하여] 인증서 파일을 만듭니다.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout client-cert.key -out client-cert.pem -config req.cnf -sha256
  1. 신뢰할 수 있는 인증서로 키 체인에 추가:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./client-cert.pem

참고: 업데이트req.cnf당신의 구체적인 위치 등에 따라.

참고: 이 절차는 MacOS High Sierra(10.13.6)에서 테스트되었습니다.Windows(윈도우)에 있는 경우 3단계에 대한 대체 명령이 필요할 수 있습니다.

에는 의나경는에우는..cert항상 기본값으로 변경합니다(즉, 거부됨). 항상 신뢰할 수 있는 상태로 변경합니다. 제 장치는 macOS입니다.

  1. 공백을 하고 명 + 공형, 유백을 합니다.keychain access열어보세요.
  2. 그래서 우리는 해야 합니다.drag and drop into시스템 키체인 -> .cert 파일에 대한 시스템 및 파일 더블 클릭 -> get info -> 항상 신뢰할 수 있도록 변경
  3. 따라서 로컬 호스트 또는 127.0.0.1에 대한 내 크롬은 안전하지 않은 하이퍼링크 성공을 유형이 사라지기 전에 볼 수 있습니다.
openssl genrsa -out server.key 2048
openssl req -new -x509 -key server.key -out server.cert -days 365

언급URL : https://stackoverflow.com/questions/21397809/create-a-trusted-self-signed-ssl-cert-for-localhost-for-use-with-express-node

반응형