개발자 노트

로컬용 TLS 통신 본문

Web

로컬용 TLS 통신

jurogrammer 2022. 1. 15. 18:39

주의사항

ssl 개발용으로, private key에 비밀번호는 걸지 않았습니다.

준비물

open-ssl 3.0.1 설치

Root CA

키 생성

openssl genrsa -out rootCA.key 2048

config 작성

[ req ]
default_bits            = 2048
default_md              = sha256
distinguished_name      = req_distinguished_name
extensions             = ext
prompt = no

[ext]
basicConstraints       = critical, CA:TRUE
subjectKeyIdentifier   = hash
authorityKeyIdentifier  = keyid:always, issuer:always
keyUsage               = critical, keyCertSign, cRLSign, digitalSignature

[req_distinguished_name]
CN = Juro Root CA
C = KR
ST = Gyeonggi-do
L = Seongnam-si
O = Juro Root CA Inc
OU = Juro Home

CSR 생성

openssl req -new -key rootCA.key -out rootCA.csr -nodes -config rootCA.conf

RootCA certificate 생성

openssl x509 -req -days 3650 -extensions ext -set_serial 1 -in rootCA.csr -signkey rootCA.key -out rootCA.crt -extfile rootCA.conf

rootCA를 System에 등록

  1. RootCA를 keyChain에 등록
  2. 항상 신뢰로 표시

Server

비밀키 생성

openssl genrsa -out server.key 2048

conf생성

[ req ]
extensions = ext
default_bits = 2048
default_md = sha256
distinguished_name = dn
prompt = no

[dn]
CN = localhost
C = KR
L = Sungnam-Si
O = Juro Inc
OU = Home

[ext]
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names
keyUsage = critical, digitalSignature, keyEncipherment
authorityKeyIdentifier = keyid,issuer
subjectKeyIdentifier = hash
basicConstraints = critical, CA:FALSE

[alt_names]
DNS.1   = localhost
DNS.2   = localhost.*
DNS.3   = *.localhost

csr생성

openssl req -new -key server.key -out server.csr -config server.conf

server cert생성

openssl x509 -req -days 365 -extensions ext -in server.csr -CA rootCA.crt -CAcreateserial -CAkey rootCA.key -out server.crt -extfile server.conf

저장소

pkcs12로 저장하기

openssl pkcs12 -export -inkey server.key -in server.crt -out server.p12

Spring Boot 설정

properties

server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:server.p12
server.ssl.key-store-password=12qw12
server.ssl.enabled=true
server.port=8443

 

결과

이슈

ssl 접속 불가능.

daum 비교하여 시도 1 ~ 시도 5까지 적용.

시도1

주체키, 기관키 추가

안됨

시도2

키사용 중요 예로 설정

안됨

시도3

rootCA에서

키사용에서 디지털서명 추가,

카사용 중요 예로 설정.

제약에서 path 길이 삭제

안됨

시도4

기본제약조건 추가

안됨

시도5

기본제약조건 -중요 추가

안됨

시도6

nsCerType = sslCA 추가

안됨

  • 삭제

시도7

사파리에서 서명 알고리즘이 잘못되었다고 함.

sha1에서 sha256으로 수정

→ openssl version을 2.8.3일 땐 sha256이 적용 안되고 3.0.1로 수정하니 적용됨.

→ 에러통과 및 유효기간이 너무 길다는 에러로 변경

시도8

Server 인증서의 유효기간을 1년으로 수정

통과

반응형
Comments