HTTPS
HTTPS
Hyper Text Transfer Protocol Secure
HTTP要求SSL/TLSというアルゴリズムを用いてHTTP通信を行う場合、どのようにコンテンツを暗号化してデータを伝送するか.
必要性
さぎょうげんり
CAと証明書
非対称鍵暗号化:暗号化、復号化の鍵が異なる
n/a原理
2つの鍵がペアとして存在し、1つで暗号化されている場合は、別の鍵で復号する必要があります.したがって、復号鍵は秘密にされ、暗号鍵はクライアントに公開され、データが安全に伝送される.ただし、クライアントとサーバのすべての通信が非対称鍵である場合、サーバに負担がかかるため、証明書の検証中に公開鍵を使用し、生成された一時鍵(秘密鍵)を使用して対称鍵を暗号化します.
つうしんプロセス
したがって、
認証
HTTPS専用証明書の発行とサーバーの実施
//Ubuntu mkcert 설치하기
$ sudo apt install libnss3-tools
$ wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
$ chmod +x mkcert
$ sudo cp mkcert /usr/local/bin/
//macOS
$ brew install mkcert
# firefox를 사용할 경우 필요에 따라 설치해주세요.
$ brew install nss
//인증서 생성
//로컬을 인증된 발급기관으로 추가한다
$ mkcert -install
//localhost로 대표되는 로컬 환경에 대한 인증서를 만든다
$ mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
//옵션으로 추가한 localhost, 127.0.0.1(IPv4), ::1(IPv6)에서 사용할 수 있는 인증서 완성. cert.pem, key.pem 이라는 파일이 생성된 것을 확인가능.
//key.pem의 경우 개인 키이므로 git에 커밋하지 않고, 암호처럼 다루어야 합니다.
//HTTP 서버작성
//node.js https 모듈 이용
const https = require('https');
const fs = require('fs');
https
.createServer(
{
key: fs.readFileSync(__dirname + '/key.pem', 'utf-8'),
cert: fs.readFileSync(__dirname + '/cert.pem', 'utf-8'),
},
function (req, res) {
res.write('Congrats! You made https server now :)');
res.end();
}
)
.listen(3001);
//express.js 이용
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();
https
.createServer(
{
key: fs.readFileSync(__dirname + '/key.pem', 'utf-8'),
cert: fs.readFileSync(__dirname + '/cert.pem', 'utf-8'),
},
app.use('/', (req, res) => {
res.send('Congrats! You made https server now :)');
})
)
.listen(3001);
//서버실행 후 https://localhost:3001로 접속시 url 왼쪽에 자물쇠가 생긴 HTTPS 프로토콜 이용한다는 것을 알 수 있다
Reference
この問題について(HTTPS), 我々は、より多くの情報をここで見つけました https://velog.io/@kaitlin_k/HTTPSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol