재우니의 블로그

 

보안은 소프트웨어 및 데이터와 관련하여 매우 중요한 측면입니다.

 

디지털 인증서를 사용하여 데이터의 무결성을 확인할 수 있습니다. 

 

더보기

Data integrity is the maintenance of, and the assurance of the accuracy and consistency of data over its entire life-cycle.(Source)

 

가장 널리 사용되는 디지털 인증서 중 하나는 X509 인증서입니다.

 

더보기

The certificate was created in 1988 as part of the X.500 directory that helped early users navigate digital networking directories. Today, X.509 certificates are used to help users identify a secure connection and X.509 certificates create a key pair in order to bind a specific user to a certificate, ensuring privacy and legitimacy for users within companies or larger organisations. (Source)

 

OpenSSL  을 이용하여 2가지 방법을 설명하고자 합니다. 이를 위해선 우선 OpenSSL 를 설치해야 합니다.

 

  • 자체 서명 된 인증서 얻기.
  • 개인 키를 사용하여 인증서 내보내기.

 

Windows 10 에 OpenSSL  설치를 하는 내용은 아래 사이트를 참고하시기 바랍니다.

 

aspdotnet.tistory.com/2653

 

Windows 윈도우 10 에 OpenSSL 을 설치하는 방법

OpenSSL은 TLS (Transport Layer Security) 및 SSL (Secure Sockets Layer) 프로토콜을 위한 모든 기능을 갖춘 툴킷 입니다. Apache 스타일 라이센스에 따라 라이센스가 부여됩니다. 이 튜토리얼은 Windows 운영..

aspdotnet.tistory.com

 

이는 자체 서명 된 인증서(self-signed certificate) 를 생성하는 데 사용됩니다. 이것은 개발 목적으로만 사용되며 프로덕션을 위해서는 인증 기관에서 인증서를 구입해야합니다.

 

인증서를 생성하기 앞서 Certificates 라는 폴더를 하나 만듭니다. 

그리고 관리자 권한으로 windows command line (Powershell 또는 터미널) 을 열고 생성한 "Certificates" 디렉터리로 이동합니다.

 

인증서에 서명하려면 openssl x509 명령을 사용합니다. 365일 동안 유효한 Certificate.crt 라는 public 인증서를 생성합니다.

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -out Certificate.crt

 

위의 명령 구문을 복사해서 실행합니다. 

 

 

폴더 내에 두 개의 파일 private key (privkey.pem)public 인증서 (Certificate.crt) 생성됩니다. 이를 사용하여 private key 와 패스워드 값을 가지고 PFX 파일을 내보낼 것입니다. 이 생성된 PFX 인증서 파일은 데이터에 서명하는 데 필요합니다.

 

더보기

.pem  

PEM (Privacy Enhanced Mail)은 Base64 인코딩된 ASCII 텍스트 이다. 파일 구분 확장자로 .pem 을 주로 사용한다.  노트패드에서 열기/수정도 가능하다. 개인키, 서버인증서, 루트인증서, 체인인증서 및  SSL 발급 요청시 생성하는 CSR 등에 사용되는 포맷이며, 가장 광범위하고 거의 99% 대부분의 시스템에 호환되는 산업 표준 포맷이다. (대부분 텍스트 파일)


.crt

거의 대부분 PEM 포맷이며, 주로 유닉스/리눅스 기반 시스템에서 인증서 파일임을 구분하기 위해서 사용되는 확장자 이다. 다른 확장자로 .cer 도 사용된다. 파일을 노트패드 등으로 바로 열어 보면 PEM 포맷인지 바이너리 포맷인지 알수 있지만 99% 는 Base64 PEM 포맷이라고 봐도 무방하다. (대부분 텍스트 파일)

 

.pfx / .p12

PKCS#12 바이너리 포맷이며, Personal Information Exchange Format 를 의미한다. 주로 Windows IIS 기반에서  인증서 적용/이동시 활용된다. 주요 장점으로는 개인키,서버인증서,루트인증서,체인인증서를 모두 담을수 있어서 SSL 인증서 적용이나 또는 이전시 상당히 유용하고 편리하다. Tomcat 등 요즘에는 pfx 설정을 지원하는 서버가 많아지고 있다.  (바이너리 이진 파일)

 

Windows Server 플랫폼에서 인증서를 사용하려면 이를 PFX 형식으로 변환해야 합니다. 

아래 명령어를 실행하여 private key 와 public 인증서를 통해 pfx 인증서를 생성하기 위해 Certificate.crt  privkey.pem 파일을 명령어에 각각 지정하여 입력합니다.

 

실행하면 pfx 인증서에 대한 비밀번호를 입력해라는 메시지가 표시됩니다. 예제 구문에서는 비밀번호를 1234 로 사용하였습니다.

 

openssl pkcs12 -export -out PrivateKeyCert.pfx -inkey privkey.pem -in Certificate.crt -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider"

 

이제 Windows Server 플랫폼에서 인증서를 사용할 수 있는 PrivateKeyCert.pfx 인증서 파일이 생성 되었습니다. 

 

 

IIS 7 및 8 환경에서 PFX 인증서 적용하기

iis 환경에서 개인 인증서를 등록하기 위해서 위에서 만든 pfx 파일을 가져오기 하여 설정합니다. 등록시 비밀번호는 pfx 변환시 사용했던 비밀번호 1234 입력 후 저장합니다.

 

그리고 웹사이트를 생성하여 생성한 인증서를 매칭 작업 하시면 됩니다.

 

 

https://aspdotnet.tistory.com/2059

 

IIS 7 및 8 환경에서 PFX 인증서 적용하기

[1] IIS 관리자에서 설치하기 1. [관리도구] -> [인터넷 정보 서비스(IIS) 관리] 콘솔을 실행합니다. 아니면 cmd 명령프롬프트에서 inetmgr 로 호출가능합니다. 2. IIS 관리자에서 [서버 인증서] 메뉴를 선

aspdotnet.tistory.com

 

 

참고 자료

 

docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/configuring-https-ssl.html

 

X509 인증서 생성 및 서명 - AWS Elastic Beanstalk

X509 인증서 생성 및 서명 OpenSSL을 사용하여 애플리케이션의 X509 인증서를 생성할 수 있습니다. OpenSSL은 x509 인증서의 생성 및 서명을 비롯한 다양한 암호화 기능을 지원하는 표준 오픈 소스 라이

docs.aws.amazon.com

 

medium.com/swlh/using-net-x509-certificates-to-sign-images-and-documents-c-net-c09838707508

 

Using .Net X509 Certificates to Sign Images and Documents (C# .Net)

Security is a very important aspect when it comes to software and data. There are various outside parties always on the look out for ways…

medium.com