전체 기본 개념과 용어
-
SSL (Secure Socket Layer): Netscape에서 개발하여 SSLv3까지 개발되고 이후로는 TLS로 계승된다.
-
TLS (Transport Layer Security): SSL3.0의 업그레이드 버전으로 시작. 현재 TLS1.2가 최신이고 TLS1.3이 개발 중이다.
-
HTTPS (HTTP + Secure)
-
CSR (Certificate Signing Request): 인증 서명 요청. 인증서명요청 파일의 확장자로 쓰인다.
-
CRT : Certificate (인증서)의 약자. 보통 인증서 파일의 확장자로 쓰인다.
-
CA (Certificate Authority): 공인인증기관.
-
PKI (Public Key Infrastructure) : 공개키 기반구조
-
PKCS (Public Key Cryptography Standards) : 공개키 암호화 표준
-
PKCS #12 : 암호화 관련 파일 포맷 정의. 인증서와 개인키가 함께 들어있다.
-
X.509 : 공개키 기반 인증서 형식 표준
-
PEM (Privacy-enhanced Electronic Mail) : 인증서 형식의 하나 (Base64 Encoded DER certificate). 해당 형식 인증서의 확장자로 쓰인다.
-
PFX (Personal inFormation eXchange) : PKCS#12 형식의 인증서 확장자로 쓰임
-
P12 : PKCS#12 형식의 인증서 확장자로 쓰임
HTTPS를 사용하기 위한(HTTP + Secure)
SSL 인증서 만들기
windows기반 cmd로 구현
관리자 권한이 아닐시 unable to write 'random state' 에러발생
open ssl 다운로드 링크
https://www.openssl.org/source/
[ Downloads ] - /source/index.html
Downloads The master sources are maintained in our git repository, which is accessible over the network and cloned on GitHub, at https://github.com/openssl/openssl. Bugs and pull patches (issues and pull requests) should be filed on the GitHub repo. Please
www.openssl.org
(SSL인증서 만들기 방법 1 - cmd OpenSSL)
SSL 인증기관
CA가 사용할 RSA key 생성
genrsa -aes256 -out rootca_private.key 2048 - 개인키 생성
genrsa - 생성
aes256 - 알고리즘
-out - 반환
rsa -in rootca_private.key -out rootca_public_key.pem -pubout
-개인키를 공개키로 만듬
req -new -key rootca_private.key -out rootca.csr -config openssl.cnf - 개인키 기반 csr 생성(인증서 서명 요청-> 인증서 요청 파일 생성)
x509 -req -days 365 -extensions v3_ca -set_serial 1 -in rootca.csr -signkey rootca_private.key -out rootca.crt - 인증서 상세 여부 부여
x509 버전으로 생성 요청 - 인증기관에 개인키로 서명한 인증서를 생성
x509 -text -in rootca.crt - 확인 공개키 포함
인증기관의 공개키가 포함된 인증서 확인 가능
웹서버(인증) 개인키 생성
genrsa -aes256 -out localhost_private.key 2048 - 개인키
req -new -key localhost_private.key -out localhost.csr -config openssl.cnf - localhost의 인증서 요청 파일 생성
x509 -req -days 365 -extensions v3_user -in localhost.csr -CA rootca.crt -CAcreateserial -CAkey rootca_private.key -out localhost.crt - localhost crt 생성
만료기간이 1년인 localhost용 SSL인증서 발급 CA(공인인증기관) 개인키로 서명
Tomcat 인증서 파일 생성
pkcs12 -export -in localhost.crt -inkey localhost_private.key -out keystore -name "localhost cert" - pkcs12 (공개키 암호화 표준)생성, name => keystore(tomcat이 읽을 인증서)
Tomcat 8.5 기준
server.xml에 추가
<Connector port="포트번호" protocol="HTTP/1.1"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="keystore경로" keystorePass="keystore비밀번호" />
인터넷 익스플로어 기준 도구 -> 인터넷 옵션 -> 내용 -> 인증서(루트인증) 가져오기
SSL인증서 만들기 방법 2
1 위치 찾기
cd C:\openssl-1.0.2j-fips-x86_64\OpenSSL\bin
2 ssl실행
openssl.exe
3 키 생성 (1234 / 1234)
genrsa -des3 -out private.pem 2048
4 개인키 생성
genrsa -out private.key 2048
5 공개키 생성
rsa -in private.key -pubout -out public.key
6 CSR 인증서 생성
req -new -key private.key -out private.csr -config openssl.cnf
7 CRT 암호화
genrsa -aes256 -out rootCA.key 2048
8 사설 CSR 생성
req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pem -config openssl.cnf
9 CRT 인증서 생성 ( 1234 / 1234 )
x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 3650
Java keytool.exe와 tomcat의 SSL 통신 설정
JRE / JDK를 설치한 /bin 폴더 keytool.exe가 담당
현재 키 저장소에 담겨있는 키를 생성하거나 삭제 할 수 있음
key생성 확인- cmd
jdk폴더 위치를 찾고, keytool -list 입력
현재 key list를 조회함
.keytool 생성 cmd 명령어 실행 =>
keytool -genkey -alias tomcat
인증서 삭제
keytool =delete -alias tomcat
'Infra > 환경' 카테고리의 다른 글
Jenkins(젠킨스), GitHub 연결하는 방법(Git 연동, React 프로젝트 자동 build 구성, Shell Script, Jenkins NodeJS, Git,CI, CD, Linux) (4) | 2024.07.03 |
---|---|
Linux(ubuntu) 젠킨스(jenkins) 설치 방법(CI, CD, pipeline 파이프 라인) (0) | 2024.06.26 |