OpenSSL 문서 원본 보기
←
OpenSSL
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
보안을 위해서 사용되는 OpenSSL을 정리 한다. *홈페이지 : http://www.openssl.org/ :*매뉴얼 : http://www.openssl.org/docs/apps/openssl.html *다운로드 : *라이선스 : Apache Style License, http://www.openssl.org/source/license.html *플랫폼 : ==CentOS에서 OpenSSL 설치== yum install openssl ==OpenSSL 사용자 매뉴얼== <p>예전에 CA(Certificate Authority)를 구축할 수 있는 Software를 판매한 적이 있었다. 직접 참여를 하지는 않았지만 관여를 하고 있었기 때문에 보안과 인증서에 대해서 공부를 했었다. 그 때 경험이 향후 보안과 관련된 작업을 할 때 여러모로 도움이 많이 되었다.</p> <p>오픈소스 중에는 OpenSSL이라는 인증서를 만들고 관리할 수 있는 소프트웨어가 있다. 인증서를 생성할 수 있기 때문에 OpenSSL을 사용하면 사설 CA를 구축할 수도 있다. 사설 CA를 구축하는 것은 좀 큰일이고 인증서가 있으면 SSL, TLS 등 보안과 관련된 기본적인 여러가지 기능을 구현할 수 있다.</p> <p>여기서는 OpenSSL을 사용하여 사설 인증서와 서버 인증서를 생성하는 방법을 알아 보자.</p> ===개인키와 사설 인증서 생성=== *2048-bits RSA 키(private.key) 생성 :*-des3 : 삼중 DES 암호화 적용 ::{| cellspacing="0" cellpadding="2" border="0" width="100%" align="center" |- | bgcolor="#D0FF9D" | openssl genrsa -des3 -out private.key 2048 : #--- 암호 입력 (암호를 반드시 기억하자) |} :*키에서 암호 삭제 ::{| cellspacing="0" cellpadding="2" border="0" width="100%" align="center" |- | bgcolor="#D0FF9D" | openssl rsa -in private.key -out private.pem |} *서명 정보가 들어 있는 CSR(private.csr) 생성 :*CSR : Certificate Signing Request openssl req -new -key private.key -out private.csr #--- 키 생성시 입력한 암호 입력 Country Name (2 letter code) [AU]: 국가 (KR) State or Province Name (full name) [Some-State]: 시/도/군 (Seoul) Locality Name (eg, city) []: 구/군 (Seoul) Organization Name (eg, company) [Internet Widgits Pty Ltd]: 회사명 (Jopenbusiness) Organizational Unit Name (eg, section) []: 서버도메인 (www.jopenbusiness.com) Common Name (eg, YOUR name) []: 이름 (pnuskgh) Email Address []: 이메일_주소 엔터 엔터 *인증기관에 인증서 신청시 private.csr 파일의 내용을 복사하여 인증기관에 보낸다. -----BEGIN NEW CERTIFICATE REQUEST----- 중간 내용 포함 -----END NEW CERTIFICATE REQUEST----- *자신이 서명한 인증서 (private.crt) 생성 :*-days 3560 : 유효기간을 3650일로 설정 openssl x509 -req -days 3560 -in private.csr -signkey private.key -out private.crt #--- 키 생성시 입력한 암호 입력 ===서버 인증서 생성=== *Server 인증서 (server.crt) 생성 openssl genrsa -des3 -out server.key 2048 openssl req -new -key server.key -out server.csr openssl x509 -req -days 3560 -in server.csr -signkey server.key -out server.crt -CA private.crt -CAkey private.key -CAcreateserial #--- server.key의 암호 입력 #--- private.key의 암호 입력 #--- 서버 인증서 검증 openssl verify -CAfile private.crt server.crt ===Client 인증서 생성=== *Client 인증서 (client.crt) 생성 openssl genrsa -des3 -out client.key 2048 openssl req -new -key client.key -out client.csr openssl x509 -req -days 3560 -in client.csr -signkey client.key -out client.crt -CA server.crt -CAkey server.key -CAcreateserial #--- client.key의 암호 입력 #--- server.key의 암호 입력 #--- Client 인증서 검증 openssl verify -CAfile server.crt client.crt ===용어 및 인증서 관리=== *CRT, DER, PEM 파일간의 변환 :*pem : base64 encoding 형태의 인증서 :*der : 바이너리 형태의 인증서 openssl x509 -outform der -in cert.crt -out cert.der openssl x509 -inform der -in cert.der -out cert.pem openssl x509 -outform der -in cert.pem -out cert.der *용어 설명 :*CA(Certificate Authority) ::*인증서를 사용할 때 Public/Private Key를 분배하는 과정의 문제점을 해결하기 위해 필요하며 Certificate을 인증 해주는 역할을 함 ::*만약 Certificate에 sign을 한 CA를 믿을 수 있다면(Trusted CA) certificate도 믿을 수 있음 ==개인키와 공개키 생성== OpenSSL을 사용하여 /etc/mail/certs/ 폴더에 인증서를 만들어 봅시다. *개인키와 공개키를 저장하고 관리하기 위한 폴더 생성 cd /etc/mail mkdir certs cd /etc/mail/certs chmod 700 /etc/mail/certs *인증을 위한 키(dsa1024.pem)를 만든다. openssl dsaparam 1024 -out dsa1024 -out dsa1024.pem *OpenSSL 개인키(mycert.pem, mykey.pem)를 만든다. openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -keyout /etc/mail/certs/mykey.pem Country Name (2 letter code) [AU]:KR State or Province Name (full name) [Some-State]:Seoul Locality Name (eg, city) []:Seoul Organization Name (eg, company) [Internet Widgits Pty Ltd]:Jopenbusiness Organizational Unit Name (eg, section) []:Jopenbusiness Common Name (eg, YOUR name) []:pnuskgh Email Address []:메일_주소 ln -s /etc/mail/certs/mycert.pem /etc/mail/certs/CAcert.pem chmod 600 /etc/mail/certs/* *OpenSSL 공개키를 만든다. openssl req -x509 -new -days 3650 -key /etc/mail/certs/mykey.pem -out /etc/mail/certs/mycert.pem Country Name (2 letter code) [GB]:KR State or Province Name (full name) [Berkshire]:Seoul Locality Name (eg, city) [Newbury]:Seoul Organization Name (eg, company) [My Company Ltd]:Jopenbusiness Organizational Unit Name (eg, section) []:Jopenbusiness Common Name (eg, your name or your server's hostname) []:pnuskgh Email Address []:메일_주소 chmod 600 /etc/mail/certs/* == 사설인증서 CA 처리 == === PHP - OpenLDAP === <pre>vi /etc/openldap/ldap.conf TLS_REQCERT allow BASE dc=ldap,dc=jopenbusiness,dc=com URI ldap://ldap.jopenbusiness.com TLS_CACERTDIR /etc/openldap/certs</pre> /etc/openldap/certs/ 폴더에 CA 인증서를 복사하여 둡니다. Test Program <pre>vi zztest.php <?php ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); $ds=ldap_connect("ldap.jopenbusiness.com", 389); if ($ds) { ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_start_tls($ds); $sr = @ldap_search($ds, "dc=ldap,dc=jopenbusiness,dc=com", "cn=demo001", array('cn')); if ($sr !== FALSE) { $info = @ldap_get_entries($ds, $sr); $dn = $info[0]['dn']; } $ldapbind = @ldap_bind($ds, $dn, ""); } ?> php -f zztest.php openssl s_client -connect ldap.jopenbusiness.com:389 openssl s_client -showcerts -connect ldap.jopenbusiness.com:389 </pre> == HTTPS 서버 인증서 == HTTPS 서비스를 위해서는 인증서 구매가 필요 합니다. == 참고 문헌 == *[http://www.innocert.co.kr/community/board.html?bid=info&uid=16&sch= OpenSSL로 인증서 생성 및 변환, 2010.9] *[http://linuxnet.ch/groups/linuxnet/wiki/5ee79/Working_with_OpenSSL_Certificates.html Working with OpenSSL Certificates, 2010.10] *[http://wiki.kldp.org/HOWTO/html/SSL-RedHat-HOWTO/ssl-redhat-howto-3.html 3. 인증서 관련 작업] [[Category:보안|Category:보안]]
OpenSSL
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보