https 웹 서버용 .pem 파일을 만드는 방법


90

Node.js에서 Express 프레임 워크를 사용하여 웹 서버를 만들고 있습니다. 전송이 SSL을 기반으로하고 싶습니다.

https 웹 서버를 생성하는 코드는 다음과 같습니다.

var app = express.createServer({
  key: fs.readFileSync('./conf/key.pem'),
  cert: fs.readFileSync('./conf/cert.pem')
});
module.exports = app;

질문 : express에 필요한 key.pem 및 cert.pem을 만드는 방법은 무엇입니까?

답변:


201

필요한 두 파일은 PEM 인코딩 된 SSL 인증서와 개인 키입니다. PEM으로 인코딩 된 인증서 및 키는 비슷 -----BEGIN RSA PRIVATE KEY-----하거나 유사한 시작 / 끝 구분 기호가있는 Base64 인코딩 텍스트입니다 .

SSL 인증서를 생성하려면 먼저 개인 키와 인증서 서명 요청 또는 CSR (공개 키도 포함)을 생성해야합니다. 다양한 방법으로이 작업을 수행 할 수 있지만 OpenSSL에서 방법은 다음과 같습니다.

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem

이렇게하면 2048 비트 RSA 개인 키와 프롬프트에서 입력하도록 선택한 모든 정보가 포함 된 CSR을 생성하기위한 대화 형 프롬프트를 입력하게됩니다. ( 참고 : 일반 이름은 사이트에 액세스하는 데 사용할 도메인 이름을 입력 할 위치입니다. )이 작업을 완료하면 일반적으로이 CSR을 신뢰할 수있는 인증 기관에 제출하고 확인을 마치면 요청하면 인증서를 받게됩니다.

신뢰할 수있는 인증서에 대해 신경 쓰지 않는 경우 (일반적으로 개발 목적의 경우) 자체 서명 된 인증서를 만들 수 있습니다. 이를 위해 거의 같은 줄을 사용할 수 있지만 두 개의 추가 매개 변수를 전달합니다.

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

게시 한 코드 스 니펫에서 사용할 수있는 인증서 (10 년 동안 유효)와 키 쌍을 제공합니다.


2
클라이언트 인증서 및 키는 어떻습니까?
nkint

1
이 게시물은 완료되었습니다. 그가 붙여 넣은 두 명령을 모두 실행하여 keys + cert를 획득하십시오. 클라이언트는 신뢰를 구축하지 않고 서버 만 구축합니다.
Ninjaxor

@paul이 .pem 키와 인증서가 생성 된 위치를 알려주시겠습니까? 어떤 디렉토리를 의미합니까? 우분투 14를 사용하고 있습니다
StormTrooper

2
셸의 현재 작업 디렉토리에 기록합니다.
Paul Kehrer 2015 년

1
이러한 방식으로 생성 된 자체 서명 된 인증서는 CN을 포함하지만 SAN은 포함하지 않는 버전 1입니다. "버전 58부터 Chrome은 인기있는 일반 이름 (CN) 대신 SAN (주체 대체 이름)을 사용하기 위해 SSL 인증서를 요구하므로 CN 지원이 제거되었습니다." ([OpenSSL을 가진 크롬 58+ [missing_subjectAltName] 자체 서명 된 인증서를 사용하여 고정] alexanderzeitler.com/articles/... )
Zhiyong

11

다음 절차를 따르십시오.

  1. 키 및 인증서를 저장할 폴더를 만듭니다.

    mkdir conf


  1. 해당 디렉토리로 이동하십시오.

    cd conf


  1. ca.cnf구성 바로 가기로 사용할 이 파일을 가져옵니다 .

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf


  1. 이 구성을 사용하여 새 인증 기관을 만듭니다.

    openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem


  1. 이제 인증 기관이 ca-key.pemca-cert.pem에 있으므로 서버에 대한 개인 키를 생성 해 보겠습니다.

    openssl genrsa -out key.pem 4096


  1. server.cnf구성 바로 가기로 사용할 이 파일을 가져옵니다 .

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf


  1. 이 구성을 사용하여 인증서 서명 요청을 생성합니다.

    openssl req -new -config server.cnf -key key.pem -out csr.pem


  1. 요청에 서명하십시오.

    openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem

이 절차 는이 인증서를 사용하는 방법에 대한 자세한 정보와 함께 여기 에서 찾았습니다 .

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