2022년 2월 10일 목요일

OpenSSL - 설치 및 사용법

1. 인터넷에서 openssl download 검색 또는 웹 브라우저에서 아래 주소로 접속

    https://sourceforge.net/projects/openssl/

        (글 작성중인) 현재 2016년 9월 버전 압축파일 다운로드 가능

    http://slproweb.com/products/Win32OpenSSL.html

        32/64비트 설치프로그램 다운로드 가능. 

   

2. 적당한 폴더에 압축 파일을 풀고 경로와 환경 파일을 시스템에 등록. 설치 프로그램으로 설치한 경우, 생략 가능.

    path 추가 : C:\OpenSSL\bin

    OpenSSL 환경파일을 시스템 환경변수에 추가 

        변수 명 : OPENSSL_CONF

        변수 값 : C:\OpenSSL\bin\openssl.cnf

    (새로 실행한) cmd에서 openssl version 실행

        결과 : OpenSSL 1.0.2j-fips  26 Sep 2016

        또는 : OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)


3. RootKey (루트 인증서 키)파일 만들기

openssl ecparam -genkey -name prime256v1 -out rootca.key  

ec : EC (Elliptic curve) key processing.

ecparam : EC parameter manipulation and generation. 

-genkey :

 This option will generate an EC private key using the specified parameters.

-name arg :  

Use the EC parameters with the specified 'short' name. 

Use -list_curves to get a list of all currently implemented EC parameters. 

-out filename

This specifies the output filename parameters to. Standard output is used if this option is not present. The output filename should not be the same as the input filename.

=> 포물선 키 프로세스 방식으로 키를 작성하는데 prime256v1 이라는 이름의 변수를 사용해서 rootca.key 파일을 생성함.

4. 인증 서명 요청서 (rootca.csr) 만들기 

openssl req -new -sha256 -key rootca.key -out rootca.csr

req : 

인증서 발급에 필요한 정보를 담고있는 '인증 서명 요청' 파일(csr) 생성. Root CA 인증서는 자기 자신 인증으로 만들 수 있음.

-new : 

이 옵션은 새 인증서 요청을 생성합니다. 사용자에게 관련 필드 값을 묻는 메시지가 표시됩니다. 프롬프트된 실제 필드, 최대/최소 크기는 설정 파일 및 요구한 extension에 지정(저장)됩니다.

-key 옵션이 제공되지 않으면 구성 파일에 지정되거나 -newkey 및 -pkeyopt 옵션과 함께 제공된 정보를 사용하여 새 개인 키를 생성하고, 그렇지 않으면 기본적으로 2048비트 길이의 RSA 키를 생성합니다.

If the -key option is not given it will generate a new private key using information specified in the configuration file or given with the -newkey and -pkeyopt options, else by default an RSA key with 2048 bits length.

-sha256

-key filename | uri 

 이 옵션은 새 인증서 또는 인증서 요청에 서명하기 위한 개인 키를 제공합니다. -in을 지정하지 않으면 해당 공개 키가 새 인증서 또는 인증서 요청에 배치되어 자체 서명이 생성됩니다.

인증서 서명의 경우 이 옵션은 -CA 옵션으로 재정의(overridden)됩니다.

이 옵션은 PEM 형식 파일에 대한 PKCS#8 형식 개인 키도 허용합니다.

C:\src\PyTest\ssl>openssl req -new -sha256 -key rootca.key -out rootca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:Gyeonggi-do
Locality Name (eg, city) []:Seoul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany
Organizational Unit Name (eg, section) []:AIRnD
Common Name (e.g. server FQDN or YOUR name) []:MyCompany.co.kr
Email Address []:test@mycompany.co.kr
-----
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
C:\src\PyTest\ssl>


5. rootca.crt SSL 인증서 파일 만들기 (CA 루트 인증서) 

openssl x509 -req -sha256 -days 999999 -in rootca.csr -signkey rootca.key -out rootca.crt

x509 

X.509 Certificate Data Management.

이 명령은 다목적 인증서 처리 명령입니다. 인증서 정보를 인쇄하고, 인증서를 다양한 형식으로 변환하고, 인증서 신뢰 설정을 편집하고, 처음부터 인증서를 생성하거나 요청을 인증한 다음 자체 서명하거나 "마이크로 CA"처럼 서명하는 데 사용할 수 있습니다. 

 

signkey : This option is an alias of -key.

key :  

이 옵션은 새 인증서 또는 인증서 요청에 서명하기 위한 개인 키를 제공합니다. -force_pubkey를 지정하지 않으면 해당 공개 키가 새 인증서 또는 인증서 요청에 배치되어 자체 서명이 생성됩니다. 

in : 

이것은 -req 플래그가 사용되는 경우 인증서 요청을 읽기 위한 입력 파일 또는 인증서를 읽기 위한 입력을 지정합니다. 두 경우 모두 기본값은 표준 입력입니다.

이 옵션은 -new 플래그와 함께 사용할 수 없습니다.

6. 서버 키 만들기

openssl ecparam -out server.key -name prime256v1 -genkey

ec : EC (Elliptic curve) key processing.

ecparam : EC parameter manipulation and generation. 

-genkey :

 This option will generate an EC private key using the specified parameters.

-name arg :  

Use the EC parameters with the specified 'short' name. 

Use -list_curves to get a list of all currently implemented EC parameters. 

-out filename : 

This specifies the output filename parameters to. Standard output is used if this option is not present. The output filename should not be the same as the input filename.

=> 포물선 키 프로세스 방식으로 키를 작성하는데 prime256v1 이라는 이름의 변수를 사용해서 server.key 파일을 생성함.


7. 서버 인증 서명 요청서 만들기

 openssl req -new -sha256 -key server.key -out server.csr

req : 

인증서 발급에 필요한 정보를 담고있는 '인증 서명 요청' 파일(csr) 생성. Root CA 인증서는 자기 자신 인증으로 만들 수 있음.

8. 서버 인증서 만들고 자체 서명하기

openssl x509 -req -sha256 -days 999999 -in server.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out server.crt

CA :

 서명에 사용할 "CA" 인증서를 지정합니다. 존재하는 경우 이는 다음과 같이 "마이크로 CA"처럼 작동합니다. "CA" 인증서의 주체 이름은 새 인증서의 발급자 이름으로 배치되며, 그런 다음 아래에 설명된 대로 "CA" 키를 사용하여 서명됩니다.

이 옵션은 -key(또는 -signkey)와 함께 사용할 수 없습니다. 이 옵션은 일반적으로 CSR을 참조하는 -req 옵션과 결합됩니다. -req 옵션이 없으면 처음부터 인증서를 생성하는 -new 옵션이 제공되지 않는 한 입력은 기존 인증서여야 합니다. 

CAkey

인증서에 서명할 CA 개인 키를 설정합니다. 개인 키는 -CA와 함께 제공된 인증서의 공개 키와 일치해야 합니다. 이 옵션이 제공되지 않으면 키가 -CA 입력에 있어야 합니다. 

CAcreateserial 

이 옵션을 사용하면 존재하지 않는 경우 CA 일련 번호 파일이 생성됩니다. 이 파일에는 일련 번호 "02"가 포함되고 서명되는 인증서의 일련 번호는 1입니다. -CA 옵션이 지정되고 일련 번호 파일이 존재하지 않으면 난수가 생성됩니다. 이것은 권장되는 방법입니다.


9. 서버 인증서 정보 확인하기

openssl x509 -in server.crt -text -noout

x509 

X.509 Certificate Data Management.

이 명령은 다목적 인증서 처리 명령입니다. 인증서 정보를 인쇄하고, 인증서를 다양한 형식으로 변환하고, 인증서 신뢰 설정을 편집하고, 처음부터 인증서를 생성하거나 요청을 인증한 다음 자체 서명하거나 "마이크로 CA"처럼 서명하는 데 사용할 수 있습니다. 

text

 인증서를 텍스트 형식으로 인쇄합니다. 공개 키, 서명 알고리즘, 발급자 및 주체 이름, 일련 번호 존재하는 확장 및 신뢰 설정을 포함한 전체 세부 정보가 인쇄됩니다.

noout 

 이 옵션은 아래 옵션에서 요청한 인쇄 이외의 출력을 방지합니다.


10. 자체 서명된 루트 인증서를 개인 컴퓨터에 설치해서 서버 인증하기



11. 개인 키 cipher 변경

openssl rsa -in foo.pem -out foo_unencrypted.pem

rsa :  RSA Keys 관련 명령 수행. 아웃 옵션에 따라 다양한 형태의 요소로 변환

in : 

입력 파일 지정. 없으면, 표준입력이 지정됨. 키가 암호화 된 경우, 암호 구문을 입력하라는 메시지 표시됨

out :  

키를 저장할 출력파일 지정. 없으면 표준 출력으로 지정됨. 암호 옵션이 설정되어있을 경우, 암호 입력 요청 메시지 표시. 입력파일명과 출력파일명은 달라야함.

 -aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea

이 옵션들은 출력 전에, 개인키를, 지정 cipher로 암호화 함. 암호를 입력하라는 문구가 표시됨. cipher 옵션이 없으면, 암호 제거. 설정하면, 암호를 추가하거나 변경하기 위해 사용할 수 있음.




※※ (OCPP용) 클라이언트 인증서 작성 시, 

subject 항목 설정할 때, 

O(organizationName) RDN : 충전소 운영자 이름 

CN(commonName) RDN : 충전소 Serial-Number 





 

 

댓글 없음: