WEB/Backend

OpenSSL 다운로드 및 자체 서명 HTTPS

Jerry_K 2024. 7. 1. 23:20

🔍 OpenSSL를 설치하여 자체 서명 

Flask로 열은 서버에서 JS를 통해 사용자의 카메라에 접근을 시도했는데,

물리적 인터페이스에 접근하려면 HTTPS의 서버 URL이 필요했다 .

 

HTTP는 HyperText Transfer Protocol을 의미하는 것으로,  서버와 클라이언트의 통신 프로토콜이다.

해당 프로토콜을 통해 데이터를 일반 텍스트로 교환하는 방식인데, 

이 과정에 제 3자의 데이터 탈취 및 오남용이 생길 수도 있다. 

 

HTTPS는 HTTP에 Secure을 더한 것으로, 

CA(독립된 인증 기관)으로 부터 SSL / TLS 인증서를 요구한다.

즉, 데이터 교환 전에 브라우저와 인증서를 공유하여 안정성을 확보한다.

 

하지만 CA로부터 인증서 받기는 쉽지 않는데, 이러한 점을 자체 서명으로 해결 할 수 있다. 

자체 서명은 실제 배포에는 보안 문제가 있으니, 어디까지나 프로토타입으로만 적절하다.

 

간단한 프로젝트의 프로토타입을 위해 자체 서명을 만들어보자 ! 

 

 


📕 OpenSSL 설치

자체 서명을 활용하려면 먼저 OpenSSL을 설치해야 한다. 

 

 

 

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

Minimum system requirements: Windows XP or later 32MB RAM 200MHz CPU 30MB hard drive space Recommended system requirements: Windows XP or later 128MB RAM 500MHz CPU 300MB hard drive space April 11, 2024 - OpenSSL 3.3 is available. Users should currently in

slproweb.com

 

해당 사이트에 들어가서 내 컴퓨터 환경에 맞는 파일 다운로드

(Light 버전은 다운받지 말라고해서 좀 더 용량 큰 파일 다운로드 받음)

 

 

 

 

기본 설정값으로 세팅한다.

 

 

C:\Program Files\OpenSSL-Win64\bin

 

기본 설정값대로 하면 해당 경로에 파일이 설치된다. 

 

 

 

 

 

"시스템 환경 변수 편집" -> "환경 변수" -> "Path" -> OpenSSL 설치 경로 저장 ->  컴퓨터 다시 시작

 

컴퓨터를 재부팅 안하면 설치 확인이 되지 않았다. 

 

 

 

재부팅하고 버전 확인하면 설치된 것을 확인 할 수 있다 .

 

 


📕 자체 서명 만들기

 

공인 인증기관에서의 인증서를 받기위해서는 돈을 지불해야한다.

 

OpenSSL을 사용하면 자체 서명 인증서를 만들 수 있다. 

자체 서명 인증서가 설치된 서버에 접속하면 브라우저의 경고가 나타나는데,

개인사용 목적에는 크게 상관 없다.

 

OpenSSL에서 만들어진 개인키와 인증서는 원하는 곳에 등록하여 사용할 수 있으며, 

여러 곳에서 공용으로 사용 가능하다 . 

 

openssl genrsa -out key.pem 2048

 

터미널에 해당 구문을 넣어주면

2048비트 RSA 개인키가 파일 key.pem로 만들어진다

 

 

openssl req -new -x509 -key key.pem -out cert.pem -days 365

 

그리고 위의 구문을 터미널에 마저 작성한다.

 

 

그러면 아래와 같이 몇개의 질문들이 있는데, 간단하게 적어주면 된다.

자체 서명된 인증서 cert.pem을 생성 할 수 있다. 

(인증서 유효 기간은 일반적으로 1년으로 설정했다.)

 

마침내 개인키와 SSL 인증서를 만들었다.

 

해당 인증서를 통해 https로 서버를 열 수 있다.

http 같은 경우 보안 이슈로 js 카메라를 실행 시킬 수 없지만, 

이제 https로 url을 생성하여  js 카메라를 사용 할 수 있다.