달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
반응형
pkcs#12 는 인증서와 키가 결합된 형태이다.

1) 개인키와 공개키를 생성한다.
2) 인증서를 생성한다.
3) pkcs#12 를 생성한다.

1) 개인키 생성을 위해선 다음과 같이 genrsa 명령을 이용한다.
> openssl genrsa -out private/user1.key 1024
> openssl genrsa -out private/user2.key 2048
> openssl genrsa -des3 -out private/user3.key 1024
> openssl genrsa -aes128 -out private/user4.key 1024

-out : 키를 추출하는 파일명 지정
-des3 / -aes128 : 키값에 암호를 걸어 놓는다. 이를 키패스프레이즈(Key Passphrase)라 한다.

2) 인증서 생성를 생성한다.
a. 인증서 생성을 위한 인증서 생성 요청파일을 생성한다.
> openssl req -new -key private/user1.key -out user1.csr
> openssl req -new -key private/user2.key -out user2.csr
> openssl req -new -key private/user3.key -out user3.csr
> openssl req -new -key private/user4.key -out user4.csr

b. 인증서를 생성한다. (여기서는 미리 구축해 놓은 demoCA 를 활용한다.)
> openssl ca -in user1.csr
> openssl ca -in user2.csr
> openssl ca -in user3.csr
> openssl ca -in user4.csr

**) 만약 인증서 생성이 실패한 경우, openssl 의 cnf 파일이 잘못 된 경우 혹은 demoCA 의 설정파일인 openssl.cnf 가 잘못된 경우이다. 해결을 위하여 openssl 을 직접 설치한 경우 /설치경로~~/openssl/bin/openssl ca -in user1.csr 과 같이 생성할 수 있다.

3) p12 파일 생성한다.
> openssl pkcs12 -inkey ../private/user1.key -in ../newcerts/02.pem -out user1.p12 -export
> openssl pkcs12 -inkey ../private/user2.key -in ../newcerts/03.pem -out user2.p12 -export
> openssl pkcs12 -inkey ../private/user3.key -in ../newcerts/04.pem -out user3.p12 -export
> openssl pkcs12 -inkey ../private/user4.key -in ../newcerts/05.pem -out user4.p12 -export

p.s. p12파일은 윈도우에서도 쉽게 불러올 수 있다.
기본적으로 p12는 3des로 암호화 되어 있다.
반응형
:
Posted by 째시기
반응형
설치 시스템 환경
xCode 3.2.5 / iOS 4.2 SDK
openssl-1.0.0c

1. openssl 다운로드
http://www.openssl.org 에서 다운로드
(2011.1.12 현재 openssl-1.0.0c  버전이 최신버전)
사용자의 위치에 압축풀기
ex) /Users/사용자이름/AppDev/openssl-1.0.0c

인스톨 위치 결정
ex)
cd /Users/사용자이름/AppDev/
mkdir openssl
cd openssl
mkdir openssl_i386 openssl_armv6 openssl_armv7


2. 소스코드 수정
Filename : openssl-1.0.0c/crypto/ui/ui_openssl.c 
수정할 부분 : static volatile sig_atomic_t intr_signal;
수정후 내용 : static volatile int intr_signal;

tip. 소스의 수정은 vi 에디터 등으로 할 수 있다. ":"를 눌러 커맨드 모드에서 
"/static volatile " 와 같이 치면 해당 부분을 바로 찾아준다.


3. makefile 수정
1) build 디렉토리를 다음과 같이 만든다.
mkdir openssl_temp

2) Config 파일을 구성한다.
./Configure BSD-generic32 enable-seed --openssldir=/Users/사용자명/AppDev/openssl-1.0.0c/openssl_temp



4. i386 (시뮬레이터)용 openssl 빌드
1) Makefile 을 수정한다.
수정전 내용 : CC = gcc
수정후 내용 : CC= /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386

수정전 내용 : CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall
수정후 내용 : CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk

2) build 수행
make
make install

3) Build 확인
ls -l openssl_test/lib
drwxr-xr-x  2 사용자명  staff       68  1 12 16:05 engines
-rw-r--r--  1 사용자명  staff  2584744  1 12 16:05 libcrypto.a
-rw-r--r--  1 사용자명  staff   454896  1 12 16:05 libssl.a
drwxr-xr-x  5 사용자명  staff      170  1 12 16:05 pkgconfig

4) Build 버전 이동
mv openssl_test/ ../openssl/openssl_i386



5. arm6 (아이폰/아이패드)용 openssl 빌드
1) Makefile 을 수정한다.
수정전 내용 : CC= /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386
수정후 내용 : CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv6

수정후 내용 : CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk
수정후 내용 : CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk

2) build 수행
make clean
make
make install

3) Build 확인
ls -l openssl_temp/lib
drwxr-xr-x  2 사용자명  staff       68  1 12 16:20 engines
-rw-r--r--  1 사용자명  staff  2999344  1 12 16:20 libcrypto.a
-rw-r--r--  1 사용자명  staff   497936  1 12 16:20 libssl.a
drwxr-xr-x  5 사용자명  staff      170  1 12 16:20 pkgconfig

4) Build 버전 이동
mv openssl_temp/ ../openssl/openssl-armv6



6. arm7 (아이폰/아이패드)용 openssl 빌드
1) Makefile 을 수정한다.
수정전 내용 : CC= /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386
수정후 내용 : CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv7

수정후 내용 : CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk
수정후 내용 : CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk

2) build 수행
make clean
make
make install

3) Build 확인
ls -l openssl_temp/lib
drwxr-xr-x  2 사용자명  staff       68  1 12 16:35 engines
-rw-r--r--  1 사용자명  staff  2666440  1 12 16:35 libcrypto.a
-rw-r--r--  1 사용자명  staff   425368  1 12 16:35 libssl.a
drwxr-xr-x  5 사용자명  staff      170  1 12 16:35 pkgconfig

4) Build 버전 이동
mv openssl_temp/ ../openssl/openssl-armv7

7. Univerals (통합버전) 만들기
1) include 파일 복사
cd /Users/사용자명/AppDev/openssl-1.0.0c
cp -RL include ../openssl/include

tip. -R 옵션은 디렉토리 복사이고, -L 옵션은 심볼릭링크 파일인 경우, 원본을 찾아서 이를 복사하는 옵션이다. 해당 include의 파일들을 보면 알겠지만, 모두 심볼릭 링크 파일로 되어있다.

2) lib 파일 통합
cd /Users/사용자명/AppDev/openssl 
lipo -create openssl_i386/lib/libssl.a openssl_armv6/lib/libssl.a openssl_armv7/lib/libssl.a -output libssl.a
lipo -create openssl_i386/lib/libcrypto.a openssl_armv6/lib/libcrypto.a openssl_armv7/lib/libcrypto.a -output libcrypto.a

tip. 이후 배포할때 include 디렉토리와 libssl.a 및 libcrypto.a 파일을 함께 배포하면 된다.

8. xCode 에서 실행하기
1) include 폴더 프로젝트 디렉토리로 복사
2) libcrypto.a libssl.a 프로젝트 디렉토리로 복사

3) libcrypto.a libssl.a 파일 xCode Framework 폴더에 추가


4) Targets -> 프로젝트 Info 에서 Header Include 다음과 같이 추가

5) 다음과 같이 헤더파일 추가 후 코드 작성

#include <openssl/md5.h>

#include <openssl/sha.h>

#include <openssl/seed.h>


반응형
:
Posted by 째시기
반응형

Openssl 사설인증기관(CA) 만들기 - Part 1  를 이용하여 사설인증기관을 만들었으면, 이제 이를 활용해보자.
1) 사설인증기관의 인증서 발급
인증서 발급을 위해서는 인증서발급요청 파일인 csr 파일이 필요하다.
이 예제에서는 서버의 SSL/TLS 통신을 위한 인증서 발급에 관한 예제이다.

root@ubtdesk:/usr/local/openssl/CA# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
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]:Seoul
Locality Name (eg, city) []:Seoul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Soongsil University
Organizational Unit Name (eg, section) []:Network Security Laboratory
Common Name (eg, YOUR name) []:bank.memoz.net
Email Address []:bank@memoz.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

root@ubtdesk:/usr/local/openssl/CA# openssl ca -in server.csr
Using configuration from /usr/local/openssl/openssl.cnf
Enter pass phrase for /usr/local/openssl/CA/private/ca.key: CA키의 비밀번호 입력
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Apr 27 08:43:26 2010 GMT
            Not After : Apr 27 08:43:26 2011 GMT
        Subject:
            countryName               = KR
            organizationName          = Soongsil University
            organizationalUnitName    = Network Security Laboratory
            commonName                = bank.memoz.net
            emailAddress              = bank@memoz.net
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                2C:23:99:C8:D1:55:03:2E:AB:B8:7D:EE:7F:62:AB:2F:F0:6C:4A:A2
            X509v3 Authority Key Identifier:
                keyid:2B:38:40:8F:A6:FA:1D:79:BF:48:4F:E4:E2:3B:3C:D6:D1:0F:BB:D9

Certificate is to be certified until Apr 27 08:43:26 2011 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=KR, O=Soongsil University, OU=Network Security Laboratory, CN=CA(Certificate Authority)/emailAddress=ca@memoz.net
        Validity
            Not Before: Apr 27 08:43:26 2010 GMT
            Not After : Apr 27 08:43:26 2011 GMT
        Subject: C=KR, O=Soongsil University, OU=Network Security Laboratory, CN=bank.memoz.net/emailAddress=bank@memoz.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:ad:35:ff:a7:0b:99:38:3d:8c:a0:b4:00:44:d0:
                    57:8e:08:f9:fe:d5:7e:a2:9b:15:ac:b8:2c:75:ad:
                    71:bd:20:80:fd:16:ab:32:05:db:4b:8f:0d:8c:97:
                    cb:a6:0f:27:ca:75:4a:74:b3:6a:a7:09:42:9e:18:
                    d4:41:49:6c:69:33:a4:21:52:9b:9a:93:4d:63:4a:
                    27:5f:93:79:55:7e:e6:65:db:64:fa:7f:97:78:d5:
                    67:ce:ee:0c:f5:3e:a9:5e:ac:c9:3d:29:c5:63:4a:
                    c9:ef:a0:ba:4e:0e:55:4b:81:f6:bf:5b:69:0d:97:
                    74:d3:a0:62:ee:85:87:77:cd
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                2C:23:99:C8:D1:55:03:2E:AB:B8:7D:EE:7F:62:AB:2F:F0:6C:4A:A2
            X509v3 Authority Key Identifier:
                keyid:2B:38:40:8F:A6:FA:1D:79:BF:48:4F:E4:E2:3B:3C:D6:D1:0F:BB:D9

    Signature Algorithm: sha1WithRSAEncryption
        7e:a0:da:be:32:3e:60:56:7a:16:02:af:0d:a6:e5:a2:50:b8:
        a3:2b:6b:f2:27:74:9e:bf:dd:99:79:63:78:c1:08:13:cc:7e:
        dd:8a:43:23:1a:56:f2:39:6f:ca:5d:20:26:76:6a:df:49:28:
        f1:df:93:b7:db:2f:28:fe:e2:30:fb:d2:e3:6a:32:13:da:d6:
        df:a2:97:80:9e:99:97:7a:69:4d:4e:e1:e1:95:96:34:b6:22:
        97:79:cd:ad:5b:78:49:48:0e:97:66:bd:03:91:55:b5:1d:d6:
        24:b8:bc:3a:1e:ff:d6:3a:7c:81:80:6b:40:d5:4b:63:18:83:
        f4:64
-----BEGIN CERTIFICATE-----
MIIDDjCCAnegAwIBAgIBATANBgkqhkiG9w0BAQUFADCBkjELMAkGA1UEBhMCS1Ix
HDAaBgNVBAoME1Nvb25nc2lsIFVuaXZlcnNpdHkxJDAiBgNVBAsMG05ldHdvcmsg
U2VjdXJpdHkgTGFib3JhdG9yeTEiMCAGA1UEAwwZQ0EoQ2VydGlmaWNhdGUgQXV0
aG9yaXR5KTEbMBkGCSqGSIb3DQEJARYMY2FAbWVtb3oubmV0MB4XDTEwMDQyNzA4
NDMyNloXDTExMDQyNzA4NDMyNlowgYkxCzAJBgNVBAYTAktSMRwwGgYDVQQKDBNT
b29uZ3NpbCBVbml2ZXJzaXR5MSQwIgYDVQQLDBtOZXR3b3JrIFNlY3VyaXR5IExh
Ym9yYXRvcnkxFzAVBgNVBAMMDmJhbmsubWVtb3oubmV0MR0wGwYJKoZIhvcNAQkB
Fg5iYW5rQG1lbW96Lm5ldDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArTX/
pwuZOD2MoLQARNBXjgj5/tV+opsVrLgsda1xvSCA/RarMgXbS48NjJfLpg8nynVK
dLNqpwlCnhjUQUlsaTOkIVKbmpNNY0onX5N5VX7mZdtk+n+XeNVnzu4M9T6pXqzJ
PSnFY0rJ76C6Tg5VS4H2v1tpDZd006Bi7oWHd80CAwEAAaN7MHkwCQYDVR0TBAIw
ADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUw
HQYDVR0OBBYEFCwjmcjRVQMuq7h97n9iqy/wbEqiMB8GA1UdIwQYMBaAFCs4QI+m
+h15v0hP5OI7PNbRD7vZMA0GCSqGSIb3DQEBBQUAA4GBAH6g2r4yPmBWehYCrw2m
5aJQuKMra/IndJ6/3Zl5Y3jBCBPMft2KQyMaVvI5b8pdICZ2at9JKPHfk7fbLyj+
4jD70uNqMhPa1t+il4CemZd6aU1O4eGVljS2Ipd5za1beElIDpdmvQORVbUd1iS4
vDoe/9Y6fIGAa0DVS2MYg/Rk
-----END CERTIFICATE-----
Data Base Updated

root@ubtdesk:/usr/local/openssl/CA# cat index.txt
V       110427081202Z           00      unknown /C=KR/O=Soongsil University/OU=Network Security Laboratory/CN=CA(Certificate Authority)/emailAddress=ca@memoz.net
V       110427084326Z           01      unknown /C=KR/O=Soongsil University/OU=Network Security Laboratory/CN=bank.memoz.net/emailAddress=bank@memoz.net

root@ubtdesk:/usr/local/openssl/CA# ls -l newcerts/
합계 8
-rw-r--r-- 1 root root 3322 2010-04-27 17:12 00.pem
-rw-r--r-- 1 root root 3301 2010-04-27 17:43 01.pem


여기서 주의할 점은 SSL/TLS 용 인증서의 CN(Common Name)은 해당 사이트의 도메인 명과 같아야 한다는 점이다.
(여기서는 bank.memoz.net 으로 설정하였으며, 만약 전체 도메인인 경우 *.memoz.net 과 같이 지정할 수 있다)

반응형
:
Posted by 째시기