방문한 웹사이트의 위험 여부(웹사이트 제작사의 위법성, 보안 수준 ,해킹 여부 등)를 판단하고 서버와 클라이언트(웹브라우저) 사이에 암호화된 통신을 하기 위해서는 HTTPS 통신이 필요함.
이러한 HTTPS 기반의 웹서비스를 하기 위해서는 서버 운영기관에서 인증기관(CA)에 해당 사이트가 누구의 소유인가, 누가 만든것인가등의 정보를 제공한 후 CA로부터 웹서비스 운영기관의 신원을 보증 받을 수 있는 디지털 인증서를 구입하여 웹서버에 설치하여야 함.


클라이언트가 등록되어져 있는 공개키(비대칭키)로 공통키(대칭키)를 암호화하여 서버측에 전송 -> 서버측에서는 클라이언트에서 전송된 암호(공통키로 암호화된)를 개인키(비대칭키)를 사용하여 복호화하여 공통키를 흭득
서버 및 클라이언트는 공통키를 사용하여 보안 통신을 수행
OPENSSL은 디지털 인증서 발급을 위한 오픈소스 라이브러리. openssl 1.0.2 부터 ALPN를 지원함.
(브라우저의 경우 ALPN을 지원하지 않으면 HTTP/2 통신을 하지 않고 HTTP/1.1 으로 강제 통신을 함.)
※ ALPN(Application-Layer Protocol Negotiation) : HTTP/2을 사용하기 위한 TLS의 확장 프로토콜 규약
OPENSSL 다운로드
https://sourceforge.net/projects/openssl
다운로드한 OPENSSL 파일을 압축 해제하여 OpenSSL 폴더를 C 드라이버 하위로 이동
고급시스템 설정 > 환경변수에서 환경변수 추가 ->
환경변수명 : OPENSSL_CONF
변수 값 : C:\OpenSSL\bin\openssl.cnf
C:\OpenSSL\bin\openssl.exe 실행
OpenSSL 콘솔 화면에서 아래 내용 실행
비밀번호 있는 개인키 설정
: OpenSSL>genrsa -des3 -out private.pem 2048 --> 생략
*( 공인인증서의 경우는 비밀번호가 필요하지만, https의 ssl 인증서에는 서비스등록할때마다, 비밀번호를 입력해줘야하기 때문에, 비밀번호가 없는 키의 생성 필요.)
비밀번호 없는 개인키 생성
: OpenSSL>genrsa -out private.key 2048
개인키와 쌍이 되는 공개키 생성
: OpenSSL>rsa -in privatekey.key -pubout -out public.key
CSR(Certificate Signing Request : 인증발급요청서) 생성
: OpenSSL>req -new -key private.key -out private.csr
인증서 생성
: OpenSSL> req -new -x509 -days 3650 -in private.csr -key private.key -out private.crt
--> 사설 CA를 사용하지 않을 경우
<Tomcat에 SSL/TLS 적용시>

이렇게 세팅을 해주면
https:// 로 들어 갈 수 있다.
주석 제거 후
<IfModule http2_module>
ProtocolsHonorOrder On
Protocols h2 h2c http/1.1
</IfModule>
추가하기
<http ~~>
<https ~~>