SSL 프로토콜
- SSL/ STTPS
- SSL은 암호화 프로토콜이다.
- HTTPS = HTTP + SSL. 즉 ,암호화된 웹 통신
- SSL의 중요한 이유
- 보안적으로 우수하다
- 안드로이드 플랫폼 같은 경우는 HTTP를 더 이상 지원하지 않음
- 적용이 안되면 SEO 점수에서 매우 큰 하락폭을 가져온다.
- SEO ⇒ search 엔진 검색
- SSL의 구성
SSL의 프로토콜을 구성하기 위해서 3개의 파일이 온다.
- Public Key (서버에서 오는 것)
- Private Key (고객이 보내는 것)
- CA ⇒ 인증 협회? public key를 믿어도 된다 라고 인증해주는 것, ca에서 발행한 것과 인증키와 다르면 애초에 발행을 안 해준다. (회사의 정보, 구입한 정보가 들어간다.)
비대칭 키 암호화 방식 : 1로 암호화하고 2로 복호화 하는 것
- 무료로 해주는 곳 : Letsencrypt
- 장점 : 성능 좋고 보안 우수
- 단점 : 무조건 도메인 보유, 90일 마다 무조건 갱신, 멀티 도메인 x 따라서 도메인 별로 발급 받아야 한다.
- 연습할 수 있는 곳 OpenSSL 패키지 - Public Key, Private Key만 있음
SSL 설치
** putty ubuntu와 node.js에서 하고 있음
1. 현재 프로젝트를 하고있는 폴더에 SSL 폴더 하나 만들기
2. ssl 폴더로 들어가기
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
위 명령어 입력하기
- key.pem이란 public key를 의미하고 cert.pem이란 private key를 의미한다.
- openssl req -x509는 어떤 키 구조인지를 의미한다.
- 4096은 대표적인 4키로바이트를 의미한다.
위 명령어를 입력하면 비밀번호 입력칸과 정보를 적는 칸이 나오고 정보를 적으면 된다.
3. AWS에서 포트 열기 - 원하는 포트로
4. server.js
//파일 import할때 쓰는 것
const fs=require("fs")
const https=require("https")
const sslport = 8433
// 프로토콜마다 포트가 정해져있어서 https의 포트는 430이다.
// 80은 관리자권한밖에 없다.
// 430번도 관리자권한밖에 없다
// 파일 import
const options={
"key" : fs.readFileSync(__dirname + "/ssl/key.pem"),
"cert" : fs.readFileSync(__dirname + "/ssl/cert.pem"),
"passphrase" : "내가 지정한 비밀번호",
}
// ssl사용 : *모든 api 경로 지정하기
app.get("*",(req,res,next)=>{
const protocol=req.protocol // http, https
if(protocol=="https") {
next() // 이거 종료시키고 밑으로 내려가겠다
}
else{
// 경로 바꾸기
const destination ="https://"+req.hostname+":8443"+req.url
res.redirect(destination);
}
})
// https 통신 열어주기
https.createServer(options,app).listen(sslport, ()=>{
console.log(`${sslport}번 포트에서 https 통신 시작`)
})728x90
'웹 > 백엔드 서버' 카테고리의 다른 글
| MongoDB (NoSQL 데이터베이스) & 우분투 mongodb설치 (0) | 2022.04.26 |
|---|---|
| node.js에 postgresql설치 및 설명 (0) | 2022.04.19 |
| DNS ( Domain name system ) (0) | 2022.04.19 |
| API 최적화 & API의 명세서 (0) | 2022.04.19 |
| node.js에 mariaDB로 게시판과 게시글페이지 만들기 (0) | 2022.04.18 |
댓글