OpenSSL Command Line
본 문서는 OpenSSL 0.9.8e 23 Feb 2007으로 작업을 했다. 처음에는 마소예제를 보고 따라해봤으나..
안되는 부분이 너무 많았다. 인증서 인증부분도 그렇고...공개키 추출에 대한 것도 없고...
결국 가장 정확한 해결책은 google과 openssl사이트밖에 없다는....
1 . 자신의 요청할 인증서 생성
-> openssl req -config ntt.cnf -new -keyout [KeyFileName].pem -out [ReqCertFileName].pem -days 365 -batch -nodes
- -nodes는 pem password를 설정하지 않는다. (2파트에서 설명)
- -batch는 DN정보를 묻지 않고 default값으로 바로 넣어준다는 의미의 옵션이다.
2. 패스프레이즈 제거
위에서 -nodes 옵션을 사용하여 인증서를 생성하면 개인키는
-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCqyuuherCzCfephhgod8hNvfACLgeU1r0qFAXxFOTffTXa8BRA uqRBb38ZK13gwl7wg1umvmGZ68I+TGs95b3YVLZTpSEFdMpMv5Vp60+5TByjhJRd zK0BQ115MdDG97lq02zD3RqRY3mSlP1P8i06NNR3hZTpP1WOIhHFiaHjBwIDAQAB AoGBAI+pPGaJ4xPWcIIiDzQK/WuXNsk+mpXxwxAf45eT8aijk6djhkWkOQHpnUk4 lzC1jlJUy8UIIuTr0GnCsfpQw0xSdXq4M8qg6f9/iDRbIJjP2XwfTzLcSJSJEs6f /jtQwFkU7t4w+blrFJBBQ4Un1soSJ8yBWXPplnoVzc9TRd6BAkEA2cLq/11cSIjm fTe4FyjVm4JxDBa/3mkhYdSnc+ZZs1EQ8MIb091oxEkmJi36kpMKxdjOPi8sqy1H wcKwDoyjpwJBAMjImuVkilymvwQJb6WY0sPwLLChH5msoMM7OvW0IiuxvoNPEsW5 5sbbhHhzogm8mNiHxi1fhsnGKPN77fTEMaECQHZb2GjGMNOH/WdP8rI70qZ8pr9A WjckAy3ubLm1GUo6pK+HgaKNNFWDwMV9tjUW0QMqTSdFcszzho4NKK4vyP8CQHJb h5Wl2QSCWINlGHj5/Plqfxmu+3+ciggIYUF2covudbL2Q5vokR+sAdxVB/KBv5B8 bIyFPxEHU2WyrUpewGECQDUiaFAvvKLwbQTTRFj/4l/zzM7TR/etIFtAcDYX4Ci5 3qlTL1MOCWtQtiAGPDRP8vRIzPkTuqcj6Qnk4ZYMSL4= -----END RSA PRIVATE KEY----- |
형태가 나온다..이는 순수한 개인키로써 사용이 바로 가능하다....보안면에서 떨어지겠지만...
그 반대로 -nodes를 제거하고 실행하면 생성된 개인키는 순수한 개인키가 아니게 된다.
내부를 보면
-----BEGIN RSA PRIVATE KEY----- ppx00yME/E+1PTcu1+KUeq45a+9lJJJmQYEAjgfba2EinLheCjfhuhcJG6NqnMVG |
위에
-----BEGIN RSA PRIVATE KEY----- |
이 부분이 있는 것을 볼 수 있는데. 이는 passpharse으로 암호화한 것이다. 즉 개인키파일을 암호화 한 것이다.
이 것은 바로 개인키로써 사용 할 수 없으면 사용시 passpharse를 제거후에 개인키로써 사용이 가능하다.
제거 방법은..
을 사용하면 되고 제거하지 않은 파일을 개인키로 사용한다면
에서 에러가 날 것이다...즉..개인키가 아닌 셈이다...암호화 된 개인키이니...못 쓸 수 밖에...^^
- 참조 사이트
3. 요청 인증서 인증하기
-> openssl ca -config ntt.cnf -batch -policy policy_anything -out [인증한 파일이름].pem -infiles [인증할 요청인증서].pem
바로 명령어가 나왔다..ㅎㅎ 자세한 사항은 configuration파일을 들여다 보시길..간단하니...
4. root 인증서 발부
-> openssl req -x509 -config rootca.cnf -newkey rsa:1024 -keyout [root인증서이름] -out [rootkey파일이름].pem -outform Pem -nodes
root인증서에 대한 인증은 누가 할까??? 라는 의문이 있었다..다른 root인증서버가 한다..
자세한 내용은 마소 자료에 있으니 참조 하자..^^
따로 존재하는 rootca.cnf라는 configuration파일이 따로 존재한다. 내부를 보면 대충 차이점을 알 수 있을 듯..
마소자료를 참조하자...잘 나와있다..
2.OpenSSL_API를_이용한_비밀키_암호화,_MD_프로그래밍.pdf
3.OpenSSL_API를_이용한_공개키_암호화.pdf
4.OpenSSL_API를_이용한_인증서,_SSL_프로그래밍.pdf
5. 인증서에서 공개키 추출
인증서에서 공개키를 추출하는 옵션은 안타깝게도 없다..많은 google의 관련 메일에서 세계 여려사람들이
불만을 하소연하고 있더라..ㅡㅁㅡ 그중에 나도 한명...
만일 아는 분 있으면 방명록으로~~쑤웅~~
일단 명령어을 보자.
openssl x509 -in rootcert.pem -pubkey -noout >pubkey.pem
rootcert라는 인증서에서 공개키를 빼자라는 -pubkey가 있다.하지만 실행해보면 커멘드 상으로 출력해 줄뿐
파일로 나올 수 있는 옵션은 없다..-outfile인가...그걸 쓰면 되도안하는 인증서에 대한 정보가 저장이 되어 버린다.
결국. >로....
-noout는 커멘트상에서는 보여 주지 않겠다는 옵션이다..
만일 windows프로그램상에서 createprocess로 실행할려면...파이프 통신으로 >대신 파일에 대한 정보를
읽어와 파일로 써야 한다.
아래와 같이...
do { res=::ReadFile( rPipe, buf, 100, &reDword, 0 ); csTemp=buf; // pList->AddString( (CString)buf ); m_csOutput+=csTemp.Left( reDword ); }while(res); |
근데..어떤사람은 system함수로 한방에 하는 사람도 있던데...난 해보지 않았다..한번 해보시길..
마치며
좀더 많은 자료는 참조링크한 사이트에 많이 있다..
참조 : http://www.madboa.com/geek/openssl/
참조 ppt : OpenSSL_인증서발부법.ppt