Java 알고리즘 Provider 추가하는 방법 1

프로젝트를 하다가 aria알고리즘을 추가해야 하는 작업을 해야 했다.
cipher에 알고리즘을 추가하기 위해서는 provider에 등록해줘야 한다.

provider에 등록하는 과정은 소스코딩하는 부분과 Sun에 인증하는 과정이 필요한다.
먼저 인증하는 과정을 먼저 하기로 했다.

참고자료 : http://download.oracle.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step61

Provider를 어떻게 등록하는지 문서상에 아주 자세히 나와있다.

1. 먼저 추가할 aria알고리즘을 작성후 provider 추가 작성후 .jar파일로 만든다.
2. 위의 링크를 보면 Step 6.1부분이 있다
Get a Code-Signing Certificate 말그대로 인증 사인을 얻는 방법을 할차례이다.


2.1 DAS keypair를 발급한다.
keytool -genkeypair -alias \
-keyalg DSA -keysize 1024 \
-dname "cn=, \
ou=Java Software Code Signing,\
o=Sun Microsystems Inc" \
-keystore \
-storepass
간단히 위와 같이 하면 된다.
예) keytool -genkeypair -alias my_alias -keyalg DSA -keysize 1024
"cn=회사이름을 적는다, ou=Java Software Code Signing, o=Sun Microsystems Inc"
-keystore my_key.key -storepass 1111

이렇게 작성하면 my_key.key라는 비밀키가 저장되게 된다.
여기서 중요한값 alias, keystore, storepass이다. 나중에도 사용하지 꼭 기억해야 한다.

정리 : alias = my_alias
keystore = my_key.key
storepass = 1111

이렇게 된다.

3. Keytool을 이용하여 인증서 서명(certificate signing)을 요청을 발급받는다.
keytool -certreq -alias \
-file \
-keystore \
-storepass

예) keytool -certreq -alias my_alias -file my_csr.csr -storepass 1111
예제를 통해서 쉽게 이해가 갈겁니다. 중요한값을 정리
alias : my_alias 이전에 작성된 값이다.
file : my_csr.csr 파일로 저장될 csr값이다. Sun에 요청할 csr(Certificate Signing Request)이다.
storepass : 이전에 저장한 비밀번호이다.

성공적을 되면 csr값이 발급되며 이 값을 가지고 javasoft-cert-request@sun.com 이메일로 위에 주소로 보내주면 된다.

더 디테일하게 설명하면
예)
이메일 제목 : equest a Certificate for Signing a JCA Provider
첨부 파일 : my_csr.csr을 첨부한다.
내용 :
Company Name : 회사이름
Street Address (Not a post office box) : 회사주소
City : 도시이름
State/Province : 도시지역
Country : 나라
Company Telephone Number : 회사전화
Company Fax Number : 회사 팩스
Requester Name : 요청한 자기의 이름을 작성한다.
Requester Telephone Number : 전화번호
Requester Email Address : 이메일 (정말 중요하다 이곳으로 리턴 메일이 옵니다.)
Brief description of your company (size, line of business, etc.)
All of the above information is required.

위에 내용을 작성한후에 보내주면 된다.
중요한것) 보냈다고 무작정 기다리면 언제 오는지 알수가 없다. 항상 답장을 받을수 있도록 질문과 답장을 요청한다. 그래야 제대로 갔는지 문제가 없는지 알수가 있다. 난 그것도 모르고 몇일동안 기다린적도 있다. ^^;;

Certification Authority(인증기관)에서 곧 request_number을 보내준다.
예) CSR #1110 이런식이다. 1110 : request_number이다.
이내용을 받고 다시 또 Sun에게 양식에 맞게 전송해줘야 한다.

수신메일을 보고 그대로 CSR #1110 이렇게 보내주면 낭패다.
그래서 문서를 잘 읽어보면 양식을 프린트한후에 팩스를 보내라구 나와있다. 난 이것을 관과했다.
양식은 링크를 걸겠다. ^^ Certification Form for CSPs(보낼양식)

링크를 보면

1장
내용에 보면 2가지를 작성해준다. request Number 이전에 받았던 숫자를 넣어준다. 1110 이다.
Subject Line: CSR #1110
request Number: _1110_____________________________


2장
Certification

I certify that I have read the above "Overview" and will comply
with the Export Administration Regulations. I understand that
any CSP developed in the United States may not be exported from
the United States without prior approval by the US Government
and that such approval is my responsibility. I further understand that
any CSP developed outside the United States nevertheless may be
subject to the Export Administration Regulations.

Company: ___회사이름____________________________________________

Address: ___회사주소____________________________________________

Signature: __자기사인__________________________ Date: ___금일날짜____

Printed Name: __다시 자기이름을 넣는다.__________________________________

Title: ___간단히 인증서 요청이라구 영어로 쓴다._________________________________________

위에도 마찬가지로 작성을 해준다. 간단히 예제를 넣었다.
Sun에서는 fax or pdf로 보내달라구 이메일을 받았었다.
위와 같이 작성후 그럼 fax는 국제fax가 보통 안될수가 있다 우리회사는 안되서 나는 pdf로 이메일보냈다.

pdf를 만드는 방법은 검색하면 나와있다. txt로 만들어서 pdf로 만든후 이메일에서 받은 이메일주소지로 pdf를 첨부하고 제목은 Subject Line: CSR #1110 이렇게 작성해주면 된다.
바로 Sun에서는 인증서를 발급해주지 않는다. 보통 5일이 걸린다.

4. 드디어 Sun에서 메일이 왔다.
아래내용이다. 중요한부분은 없애구 간략히

*** JCE Code Signing Certificate Issuance ***

1110

CN=aaa,OU=java Software Code Signing,O=Sun Microsystems Inc

-----BEGIN CERTIFICATE-----
MIIDsjCCA3CgAwIBAgICAzcwCwYHKoZIzjgEAwUAMIGQMQswCQYDVQQGEwJVUzEL
drM59CwIG3diJEPIiAbu/AIUJym6BvdOxA5n9mkSIU9S0vPV3so=
-----END CERTIFICATE-----


CN=JCE Code Signing CA,OU=Java Software Code Signing,O=Sun Microsystems
Inc,L=Palo Alto,ST=CA,C=US

-----BEGIN CERTIFICATE-----
MIIDwDCCA36gAwIBAgIBEDALBgcqhkjOOAQDBQAwgZAxCzAJBgNVBAYTAlVTMQsw
M/38SQ==
-----END CERTIFICATE-----

If you need assistance or having problem importing certificate, please
contact us through jce-notifications@sun.com.

문제가 있으면 자기내로 이메일을 보내달란다.
우리는 2개의 인증서를 받았다. 난 각각 이름을 달리해서 pem로 이것을 저장했다.
code-signing.pem
CA.pem

이렇게 했다. pem은 txt를 pem확장자로 바꾼것밖에 없다.


5. 이제 드디어 keytool을 이용하여 key값을 등록하는 차례다.
keytool -import -alias \
-file \
-keystore \
-storepass

keytool -import -alias \
-file \
-keystore \
-storepass

아까 받은 2개의 인증서를 keytool을 이용하여 등록하는 과정이다.

예제)
keytool -import -alias my_alias -file CA.pem -keystore my_key.key -storepass 1111
keytool -import -alias my_alias -file code-signing.pem -keystore my_key.key -storepass 1111
이렇게 작성되면 keytool을 통해서 이전에 my_key.key값에 추가가 되는것이다.
이젠 이 키값을 이용하여 .jar파일을 사인할 차례다

6. Provider를 사인하기
jarsigner -keystore \
-storepass \


예) jarsigner -keystore my_key.key -storepass 1111 aria.jar my_alias
아무 메세지가 없으면 정상적으로 된것이다.
jar파일이 제대로 인증됐는지 체크를 한다.
jarsigner -verify
리턴값이 jar verified라구 나오면 제대로 동작이 된것이다.

오늘은 여기까지 나머지는 문서를 참고하거나 책을 이용하거나 하면 될것같다.
이번에 알고리즘 추가하는 작업을 하면서 문서는 있었지만 Sun에 메일을 보내야 하는 작업을 하면서
몇가지 잘안되는부분과 오해가 있어서 좀 시간이 걸렸다. 그래서 나중에 다른분들을 위해서 간략히
설명했다.~~

댓글

가장 많이 본 글