Infra/환경

OPEN SSL을 활용하여 자체 서명으로 인증서 만들기(HTTPS, HTTP, 웹사이트 HTTPS, SSL, SSL 인증서)

개발자 DalBy 2024. 5. 14. 14:07
반응형

전체 기본 개념과 용어

더보기
  1. SSL (Secure Socket Layer): Netscape에서 개발하여 SSLv3까지 개발되고 이후로는 TLS로 계승된다.
  2. TLS (Transport Layer Security): SSL3.0의 업그레이드 버전으로 시작. 현재 TLS1.2가 최신이고 TLS1.3이 개발 중이다.
  3. HTTPS (HTTP + Secure)
  4. CSR (Certificate Signing Request): 인증 서명 요청. 인증서명요청 파일의 확장자로 쓰인다.
  5. CRT : Certificate (인증서)의 약자. 보통 인증서 파일의 확장자로 쓰인다.
  6. CA (Certificate Authority): 공인인증기관.
  7. PKI (Public Key Infrastructure) : 공개키 기반구조
  8. PKCS (Public Key Cryptography Standards) : 공개키 암호화 표준
  9. PKCS #12 : 암호화 관련 파일 포맷 정의. 인증서와 개인키가 함께 들어있다.
  10. X.509 : 공개키 기반 인증서 형식 표준
  11. PEM (Privacy-enhanced Electronic Mail) : 인증서 형식의 하나 (Base64 Encoded DER certificate). 해당 형식 인증서의 확장자로 쓰인다.
  12. PFX (Personal inFormation eXchange) : PKCS#12 형식의 인증서 확장자로 쓰임
  13. 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

 



반응형