OpenSSL 설치

1. OpenSSL 기능과 특징

OpenSSL은 암호화와 보안 프로토콜을 구현하는 라이브러리 및 도구 모음입니다. 이는 주로 Linux 운영체제에서 사용되지만 다른 운영체제에서도 사용할 수 있습니다. Ubuntu 서버에 포함된 OpenSSL은 다음과 같은 기능과 특징을 가지고 있습니다:

  1. 암호화 및 해시 기능: OpenSSL은 다양한 암호화 알고리즘 (AES, DES, RSA 등) 및 해시 함수 (MD5, SHA-1, SHA-256 등)를 지원합니다. 이는 데이터의 보안을 유지하기 위해 사용자가 데이터를 안전하게 저장하거나 전송할 수 있게 합니다.
  2. SSL/TLS 프로토콜: OpenSSL은 SSL (Secure Sockets Layer) 및 TLS (Transport Layer Security) 프로토콜을 구현하는 데 사용됩니다. 이는 서버와 클라이언트 간의 통신을 암호화하여 데이터의 기밀성과 무결성을 보장하며, 중간자 공격으로부터 보호됩니다.
  3. 인증서 관리: OpenSSL은 X.509 인증서 형식을 지원하여 공개 키 인증서를 생성, 관리 및 검증 할 수 있습니다. 이는 서버와 클라이언트 간의 신뢰 관계를 확립하고, 전자 상거래 및 인증 시스템에서 사용됩니다.
  4. 암호화 키 및 CSR 생성: OpenSSL은 대칭 및 비대칭 암호화 키를 생성할 수 있습니다. 또한, 인증서 서명 요청 (CSR)을 생성하여 인증 기관에 보낼 수 있습니다. CSR은 서버 인증서 발급을 요청하기 위해 사용됩니다.
  5. 명령 줄 도구: OpenSSL은 명령 줄 도구를 포함하고 있어, 개발자 및 시스템 관리자가 암호화, 해시, 인증서 관리 등과 같은 작업을 수행 할 수 있습니다.
  6. 오픈 소스: OpenSSL은 오픈 소스 프로젝트로 공개되어 있으며, 많은 개발자들이 기여하고 있습니다. 이는 소스 코드에 대한 검증 및 보안 강화에 도움이 되며, 커뮤니티 지원과 업데이트를 받을 수 있는 장점이 있습니다.

2. OpenSSL 설치

1) OpenSSL 설치

Ubuntu 서버의 OpenSSL은 위와 같은 기능과 특징을 제공하여 안전한 네트워크 통신을 구현하는 데 사용됩니다.

 sudo apt install openssl

다음 명령어를 실행하여 OpenSSL을 설치합니다

1) OpenSSL 버전 확인

openssl version

3. param 키 생성

1) param 필요성

Openssl을 사용하여 param 키를 생성하는 이유는 주로 다음과 같은 보안 알고리즘에 필요한 매개 변수를 생성하기 위해서입니다.

  1. Diffie-Hellman (DH) 키 교환: DH는 공개키 암호 시스템의 일종으로, 서로 다른 두 개의 개인 키를 공유하지 않고도 안전하게 통신을 할 수 있도록 합니다. DH에는 공유하는 매개 변수인 p와 g가 필요하며, 이러한 매개 변수는 OpenSSL을 사용하여 생성할 수 있습니다.
  2. RSA 암호화: RSA는 공개키 암호화 방식으로, 개인 키와 공개 키를 생성하기 위해 소수 p와 q를 사용합니다. OpenSSL을 사용하여 이러한 소수를 생성할 수 있습니다.

2) DH 매개 변수 생성

2048 비트 크기의 DH 매개 변수를 생성

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

4096 비트 크기의 DH 매개 변수를 생성

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

사용자의 요구에 따라 크기와 파일 이름을 변경할 수 있습니다. 또한 OpenSSL을 사용하여 다른 암호화 알고리즘에 필요한 매개 변수를 생성하는 방법도 있습니다.
param 키는 OpenSSL에서 사용되는 Diffie-Hellman(DH) 키 교환 프로토콜에 필요한 매개 변수를 생성하는 데 사용됩니다. DH 프로토콜은 공개키 암호 시스템의 일종으로, 두 개체 간에 비밀 공유 키를 생성하기 위해 사용됩니다. 이러한 비밀 키는 보안된 통신을 위해 사용될 수 있습니다.

4. 추가 학습 자료

OpenSSL에 대해 더 많이 학습하고 싶다면 다음 자료들을 참고할 수 있습니다:

Thinknote