일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- PostgreSQL
- CVAT
- jvm
- kubectl
- Network
- OS
- log
- airflow
- kubernetes
- grafana
- helm
- Python
- Operating System
- zookeeper
- CSV
- ip
- AWS
- kubeadm
- MAC address
- JavaScript
- aws s3
- Kafka
- docker
- tcp
- EC2
- Vision
- Trino
- java
- Spring
- Packet
Archives
- Today
- Total
JUST WRITE
HTTP vs HTTPS 본문
HTTP
HyperText Transfer Protocol
- HyperText를 전송하기 위한 통신규약
- Web Server와 Web Browser 사이에 데이터를 전송하기 위한 통신 규약
- Default Port -> 80
HTTPS
HyperText Transfer Protocol Secure
- HTTP + SSL(보안 소켓 계층) -> 보안 기능의 추가
- 데이터 전송 이전에 데이터 암호화를 통해 보안 강화
- Default Port -> 443
- 장점
- 보안 기능의 강화
- 온라인 마케팅 -> 검색엔진 최적화(SEO, Search Engine Optimization)에서 가산점
- 가속화 모바일 페이지(AMP, Accelerated Mobile Pages) 만들 때 필요
**참고 (RFC_7540 HyperText Transfer Protocol Version 2(HTTP/2) 3절)
3. Starting HTTP/2 An HTTP/2 connection is an application-layer protocol running on top of a TCP connection ([TCP]). The client is the TCP connection initiator. HTTP/2 uses the same "http" and "https" URI schemes used by HTTP/1.1. HTTP/2 shares the same default port numbers: 80 for "http" URIs and 443 for "https" URIs. As a result, implementations processing requests for target resource URIs like "http://example.org/foo" or "https://example.com/bar" are required to first discover whether the upstream server (the immediate peer to which the client wishes to establish a connection) supports HTTP/2. The means by which support for HTTP/2 is determined is different for "http" and "https" URIs. Discovery for "http" URIs is described in Section 3.2. Discovery for "https" URIs is described in Section 3.3.
SSL
Secure Socket Layer
- CA(Certificate Authority) 서드 파티로부터 Server와 Client 인증하는 데 사용
- TLS(Transport Layer Security)가 표준화 되면서 SSL로 바뀜
- TCP/IP 사용하는 통신에 적용, 전송계층(Transport Layer)에서 보안, 데이터 무결성 확보
- Netscape사에서 발명 => IETF의 관리로 TLS로 명명(TLS 1.0은 SSL 3.0 계승)
HTTPS 실습
- Java Keytool 유틸리티를 활용하여 인증서 생성, SSL 설정
- keytool -> 인증서를 관리하는 Tool, JDK 1.6부터 기본으로 포함
- Java는 OS와 별개로 keystore라는 곳에 모든 인증서를 관리
- 기본적으로 JAVA_HOME/jre/lib/security 폴더 안에 cacerts라는 keystore 파일 보관
실습 진행
- 기본 Spring Boot Project 생성
- Java Keytool 유틸리티를 통해서 인증서 생성
- 아래 command를 만든 Spring Boot Project base dir 위치에서 실행
- keystore.p12 파일 생성 확인
- Spring Boot Project 내 application.properties 파일 아래와 같이 편집 후 Spring Boot 실행
- http와 https로 들어갔을 때 차이 확인
** 인증서 생성
keytool -genkey -alias tomcat \
-storetype PKCS12 \
-keyalg RSA \
-keysize 2048 \
-keystore keystore.p12 \
-validity 4000
# 이후 비밀번호 지정
# 아무값 입력 후(테스트용) 마지막 확인 창에서 'yes' OR '예' 입력
** application.properties 파일 수정
server.ssl.key-store: keystore.p12
server.ssl.key-store-password: 123456
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat
실습 참고 사항
- Tomcat에서 수용하는 keystore 타입은 JKS, PKCS11, PKCS12
- JKS -> Java 표준 keystore형식
- PKCS12 -> 인터넷 표준 형식
- Java Keytool
- KeyStore라는 인터페이스를 통해 Private Key, Public Key, Certificate를 추상화하여 제공
- command 방식의 유틸리티(JDK에 포함)
- OpenSSL과 비슷한 용도로 사용
** keystore 내용 확인
# keystore 파일 Path에서,,,
keytool -list -v -keystore #{keysotre파일명}
# keysotre 비밀번호 입력
## keysotre 내용 출력 example
키 저장소 유형: PKCS12
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
별칭 이름: tomcat
생성 날짜: 2020. 7. 7
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Jeong Sang Wan, OU=encore, O=encore, L=seoul, ST=seoul, C=82
발행자: CN=Jeong Sang Wan, OU=encore, O=encore, L=seoul, ST=seoul, C=82
일련 번호: 6bace66a
적합한 시작 날짜: Tue Jul 07 19:37:26 GMT+09:00 2020 종료 날짜: Fri Jun 20 19:37:26 GMT+09:00 2031
인증서 지문:
MD5: 41:7F:B8:E0:A0:1D:39:42:4A:EB:70:ED:DF:52:DF:24
SHA1: 86:33:3F:9C:93:A0:52:62:A4:4B:B9:84:43:77:CC:47:3F:64:7B:53
SHA256: B0:C1:E5:73:F6:3C:FD:CD:98:E6:91:CC:AC:F1:F5:DB:3E:A1:50:96:3A:DE:30:09:0C:E8:DA:A9:2D:6F:A0:61
서명 알고리즘 이름: SHA256withRSA
주체 공용 키 알고리즘: 2048비트 RSA 키
버전: 3
확장:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 78 00 F5 B0 8A 87 C8 B9 E5 61 D0 AA F7 42 7E 3F x........a...B.?
0010: 05 EB 26 96 ..&.
]
]
*******************************************
*******************************************
** keystore 키 변경
# keystore 파일 Path에서,,,
keytool -storepasswd -keystore #{keysotre파일명}
Enter keystore password : #{현재 keysotre 비밀번호}
New keystore password : #{새 keysotre 비밀번호}
Re-enter new keystore password : #{새 keysotre 비밀번호}
[참고사이트]
728x90
반응형
'Network' 카테고리의 다른 글
GET vs POST (0) | 2021.09.22 |
---|---|
SSL (0) | 2021.09.18 |
Session Clustering (0) | 2021.09.02 |
Load Balancing (0) | 2021.08.31 |
CSR vs SSR (0) | 2021.08.21 |
Comments