본문 바로가기

tls

PQ TLS 1.3 handshake 실습 2: 서버 인증서 구축 및 클라이언트와의 handshake

반응형

<서버>

1. 서버 인증서 구축.

oqs-provider 0.8.0 - 사용 중단 통지

이는 Kyber 및 Dilithium(3라운드 버전) 사용자에게 각각 ML-KEM(FIPS 203 최종 버전) 및 ML-DSA(FIPS 204 최종 버전)로 전환하도록 알리기 위한 것이며, 두 가지 모두에 대한 지원이 oqsprovider의 다음 릴리스와 함께 제거될 것이기 때문입니다.

#CA (인증 기관) 인증서 생성
openssl req -x509 -new -newkey mldsa44 -keyout mldsa44_CA.key -out mldsa44_CA.crt -nodes -subj "/CN=test CA" -days 365 -config /opt/homebrew/etc/openssl@3/openssl.cnf

#서버용 개인 키 생성
openssl genpkey -algorithm mldsa44 -out mldsa44_srv.key

#서버의 CSR(인증서 서명 요청, Certificate Signing Request) 생성
openssl req -new -newkey mldsa44 -keyout mldsa44_srv.key -out mldsa44_srv.csr -nodes -subj "/CN=test server" -config /opt/homebrew/etc/openssl@3/openssl.cnf

#서버의 인증서를 CA로 서명하여 발급
openssl x509 -req -in mldsa44_srv.csr -out mldsa44_srv.crt -CA mldsa44_CA.crt -CAkey mldsa44_CA.key -CAcreateserial -days 365

## 사용하는 버전이 0.8.0이기 때문에 kyber가 아닌 mldsa로 서명 키 생성

- oqs-provider에 알고리즘 리스트를 보고 원하는 알고리즘으로 선택하면 됨.

 

2.

#TLS 포트 번호가 보통 443이기 때문에 443으로 지정
openssl s_server -accept 443 -cert mldsa44_srv.crt -key mldsa44_srv.key -www -tls1_3 -groups mlkem768:frodo640shake

- 443 포트 번호는 인터넷에서 HTTPS(Hypertext Transfer Protocol Secure) 트래픽을 처리하는 기본 포트

- 웹 사이트가 HTTPS(SSL/TLS 암호화)를 사용할 때 기본적으로 443 포트를 통해 통신

- 예 : 브라우저에서 https://examples.com을 입력하면 내부적으로 443포트가 사용

 

- 상황에 따라 포트 번호를 정해서 443으로 꼭 사용하지 않아도 됨.

#결과

 

반응형

 

<클라이언트>

1.

openssl s_client -connect <서버 ip 주소>:<포트 번호> -groups frodo640shake

- 저는 frodo640shake를 사용했지만, oqs-provider 라이브러리 리스트를 보고 원하는 알고리즘을 설정하면 됩니다.

 

#결과 :verify error 나는 이슈는 아직 해결 못함.

 

 

반응형