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을 만드는 방법은 무엇입니까?
답변
필요한 두 파일은 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 년 동안 유효)와 키 쌍을 제공합니다.
답변
다음 절차를 따르십시오.
-
키 및 인증서를 저장할 폴더를 만듭니다.
mkdir conf
-
해당 디렉토리로 이동하십시오.
cd conf
-
ca.cnf
구성 바로 가기로 사용할 이 파일을 가져옵니다 .wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf
-
이 구성을 사용하여 새 인증 기관을 만듭니다.
openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem
-
이제 인증 기관이
ca-key.pem
및ca-cert.pem
에 있으므로 서버에 대한 개인 키를 생성 해 보겠습니다.openssl genrsa -out key.pem 4096
-
server.cnf
구성 바로 가기로 사용할 이 파일을 가져옵니다 .wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf
-
이 구성을 사용하여 인증서 서명 요청을 생성합니다.
openssl req -new -config server.cnf -key key.pem -out csr.pem
-
요청에 서명하십시오.
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
이 절차 는이 인증서를 사용하는 방법에 대한 자세한 정보와 함께 여기 에서 찾았습니다 .