1. 개인키 , 공개키 발급
실행이 됬다면, 먼저 PrivateKey를 생성해줍니다.
openssl genrsa -des3 -out 키이름 2048
openssl genrsa -des3 -out private.pem 2048
를 실행하면
비밀번호까지 두번 입력하면
비밀번호가 담긴 개인키를 만들수 있다 .
공인인증서의 경우는 비밀번호가 필요하지만.....
https의 ssl 인증서에는 서비스등록할때마다, 비밀번호를 입력해줘야하기 때문에,
비밀번호가 없는 키를 새로 만들어주자..
openssl genrsa -out 키이름 2048
openssl genrsa -out private.key 2048
비밀번호가 없는 private키를 새롭게 발급하였다.
생성된 private.key를 확인해보면 아래와 같은 키가 생겨있는걸 알수 있다.
이제 아래 명령어로 해당 개인키와 쌍이되는 공개키를 뽑아내보자
openssl rsa -in <개인키> -pubout -out public.key
openssl rsa -in private.key -pubout -out public.key
개인키와, 공개키가 생성되었다!
2. CSR( 인증요청서 ) 만들기
CSR이란 ?
SSL 인증의 정보를 암호화하여 인증기관에 보내 인증서를 발급받게하는 신청서입니다.
정보항목에는 국가코드, 도시, 회사명, 부서명, 이메일, 도메인주소 등이 들어가있습니다.
다음 명령어로 CSR을 생성합니다.
openssl req -new -key <키> -out CSR이름csr
openssl req -new -key private.key -out private.csr
명령어 진행후 , 추가 사항을 입력하면 됩니다.
( 개발용이기때문에 아무 정보나 입력했습니다. )
3. CRT( 인증서 ) 만들기
CSR까지 생성했다면, CRT는 그냥 만들수 있지만,
나는 나만의 사설 CA에서 인증까지 받은 인증서를 만들어보려고한다.
먼저 인증서의 서명을 해줄 rootCA가 필요하다.
3-1> rootCA.key 생성하기!
openssl genrsa <암호화 알고리즘> -out 키이름 2048
openssl genrsa -aes256 -out rootCA.key 2048
3-2> rootCA 사설 CSR 생성하기
rootCA.key를 사용하여 10년 짜리 rootCA.pem을 생성한다.
openssl req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pem
(임시로 국가,도시, 회사, 도메인,메일 등을 입력했습니다.)
3-3> CRT 생성
[2]에서 만들었던 csr을 나만의 커스텀 CA인 rootCA의 인증을 받아 private.crt로 생성합니다.
openssl x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 3650
파일을 확인해보면 CRT를 확인할수 있습니다!
인증서를 확인할수 있습니다.
저는 TOMCAT에 인증서를 적용할것이기 때문에 pkcs12라는 형식으로 바꿔줍니다.
1. >
openssl pkcs12 -export -in private.crt -inkey private.key -out .keystore -name tomcat
자이제
.keystore를 사용하여 SSL 통신을 구현할 수 있습니다.
위 부분을 실행해도 .keystore파일로 SSL적용이 제대로 안되어서 추가로 찾아보던 도중 아래 방법을 추가로 진행해서
mykeystore.jks 파일을 사용해 SSL 적용을 성공하였다.
위에 적어놓은 명령어를 순서대로 진행하지 않고 아래 명령어만을 순서대로 진행하다보면 pem파일이 없을텐데 그럴때는 상단에 명시해놓은 명령어들을 순서대로 진행해서 pem 파일을 만들고 해당 rootCA.pem 파일을 이용하여 진행하면 정상적으로 jks파일이 만들어지며, SSL에 정상 접속이된다.
// 기존 환경에서 CA 인증 Public key를 키스토어에 넣으려 할 때 발생하는 오류
D:\ca>keytool -import -v -alias pms -file public.cer -keystore pms.jks
keystore 암호를 입력하십시오: weblogic
keytool 오류: java.lang.Exception: 회신의 체인을 설정하지 못했습니다.
// 이하는 인증서를 새로 생성하여 작업한 내역입니다.
keytool -genkey -keyalg RSA -alias mykey -keystore mykeystore.jks
keystore 암호를 입력하십시오: password
이름과 성을 입력하십시오.
[Unknown]: Saltware
조직 단위 이름을 입력하십시오.
[Unknown]: CS
조직 이름을 입력하십시오.
[Unknown]: Saltware
구/군/시 이름을 입력하십시오?
[Unknown]: Seoul
시/도 이름을 입력하십시오.
[Unknown]: Seoul
이 조직의 두 자리 국가 코드를 입력하십시오.
[Unknown]: KR
CN=Saltware, OU=CS, O=Saltware, L=Seoul, ST=Seoul, C=KR이(가) 맞습니까?
[아니오]: y
<mykey>에 대한 키 암호를 입력하십시오.
(keystore 암호와 같은 경우 RETURN을 누르십시오): password
keytool -certreq -keystore mykeystore.jks
keystore 암호를 입력하십시오: password
-----BEGIN NEW CERTIFICATE REQUEST-----
-----END NEW CERTIFICATE REQUEST-----
D:\ca\test>dir
D 드라이브의 볼륨: Data
볼륨 일련 번호: 8066-5005
D:\ca\test 디렉터리
2007-01-10 오전 11:18 <DIR> .
2007-01-10 오전 11:18 <DIR> ..
2007-01-10 오전 11:16 976 ca.pem <= TestRootCA 인증서
2007-01-10 오전 11:17 1,736 intermediateCA.pem <= TestIntermediateCA 인증서
2007-01-10 오전 11:07 1,334 mykeystore.jks
2007-01-10 오전 11:18 1,920 public.pem <= VeriSign 에서 받은 인증서
7개 파일 5,966 바이트
2개 디렉터리 10,939,572,224 바이트 남음
// Keystore 에 RootCA 와 intermediate 인증서 import
keytool -import -alias verisignaCA -file ca.pem -keystore mykeystore.jks -trustcacerts
keystore 암호를 입력하십시오: password
이 인증서를 신뢰하십니까?[아니오]: y
keytool -import -alias verisignIntemdiateCA -file intermediateCA.pem -keystore mykeystore.jks -trustcacerts
keystore 암호를 입력하십시오: password
// VeriSign에서 받은 인증서 설치 , 이때 alias는 private 키와 public 키의 별칭을 같게함
keytool -import -alias mykey -file public.pem -keystore mykeystore.jks -trustcacerts
keystore 암호를 입력하십시오: password
keytool -v -list -keystore mykeystore.jks
keystore 암호를 입력하십시오: password
출처 : https://lollaziest.tistory.com/117
https://m.cafe.daum.net/sepro/5CO5/29?listURI=%2Fsepro%2F5CO5
'Server > SSL' 카테고리의 다른 글
[SSL] 정보확인 명령어 (0) | 2022.06.27 |
---|---|
[SSL] 특정포트 연결확인 (0) | 2022.05.24 |
[Let's Encrypt] 키세트를 찾을수 없습니다. 에러 (0) | 2022.04.15 |
[DuckDNS] 도메인으로 서버를 열기 위한 포트포워딩 설정 (0) | 2022.03.31 |
[SSL] 윈도우에서 SSL 인증서 적용 (0) | 2022.03.31 |
댓글