성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>ssh-keygen으로 생성한 개인키/공개키 파일을 각각 PKCS8/PEM 형식으로 변환하는 방법</h1> <p> SSH 사용을 위해 보통 <a target='tab' href='https://www.sysnet.pe.kr/2/0/11942'>ssh-keygen 도구를 이용해 개인키/공개키 파일을 생성</a>하게 되는데요,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>ssh-keygen -t rsa -b 4096 -f .\id_rsa</span> Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in .\id_rsa. Your public key has been saved in .\id_rsa.pub. The key fingerprint is: SHA256:l5Tuxao...UYCFHtg testusr@TESTPC The key's randomart image is: +---[RSA 4096]----+ | o+ o +o.. | |oo.o E. . . | |ooo +..o o | |.. =..+ .o o | |. . o.oS = + | | + oo+o.+ = | | . .oo=. + | | +..oo . | | .oo. . | +----[SHA256]-----+ c:\temp> </pre> <br /> 이렇게 생성한 id_rsa, id_rsa.pub 파일의 내용은 각각 다음과 같은 내용을 갖습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>type id_rsa</span> -----BEGIN RSA PRIVATE KEY----- MIIJKgIBAAKCAgEAz849b+b4pKd2Gk34NOCPF+zuO9jG6E+pL+ZXzUFAXJfh1fGB ...[생략]... 1JzXJK0bWJ4p81eTEq6SFrmZVX0ZR/5M6wQ/x2WsKszZQ/OIoLO9mCKrDnsd/w== -----END RSA PRIVATE KEY----- </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>type id_rsa.pub</span> ssh-rsa AAAAB3NzaC1y..[생략]...WL7RfggwYsUmOQ== tester@TESTPC </pre> <br /> 자, 그럼 우선 개인키 파일 먼저 PKCS8 형식으로 변환해 볼까요? ^^ 이를 위해 간단하게 openssl.exe를 사용할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>openssl pkcs8 -topk8 -nocrypt -in id_rsa -out id_rsa.pkcs8</span> C:\temp> <span style='color: blue; font-weight: bold'>type id_rsa.pkcs8</span> -----BEGIN PRIVATE KEY----- MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDPzj1v5vikp3Ya ...[생략]... /kzrBD/HZawqzNlD84igs72YIqsOex3/ -----END PRIVATE KEY----- </pre> <br /> 보는 바와 같이 "BEGIN RSA PRIVATE KEY"/"END RSA PRIVATE KEY" 쌍이 "BEGIN PRIVATE KEY"/"END PRIVATE KEY" 쌍으로 바뀌었습니다.<br /> <br /> 그리고, 공개키 파일 역시 PEM 포맷으로 openssl.exe를 이용해 다음과 같이 변경할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>openssl rsa -in id_rsa -pubout -out id_rsa.pub.pem</span> c:\temp> <span style='color: blue; font-weight: bold'>type id_rsa.pub.pem</span> -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKMBt0kFhB3yc9BG6c9D7LkeEH ...[생략]... BwpKZWMf67orcyJvIQIDAQAB -----END PUBLIC KEY----- </pre> <br /> <hr style='width: 50%' /><br /> <br /> 참고로, openssl을 이용해 생성한 개인키 역시 저 방식과 유사한 과정을 거쳐 pkcs8/pem 포맷으로 변경하는 것이 가능합니다. 우선, 개인키를 다음과 같이 생성하면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>openssl genrsa -out id_rsa.pem 1024</span> C:\temp> <span style='color: blue; font-weight: bold'>type id_rsa.pem</span> -----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDNJP8Y6qKBJdeZ9CBUufD0LXtTmyNTlQvuum38G+7+MYgpp/WA ...[생략]... UNIXUZ4MOyijb2DPLolpCBsrPjxEGIr3iHXZYALcNq998w== -----END RSA PRIVATE KEY----- </pre> <br /> 이 파일은 ssh-keygen을 이용해 생성한 id_rsa 파일과 동일한 "BEGIN RSA PRIVATE KEY"/"END RSA PRIVATE KEY" 쌍의 형식을 띠고 있으므로 위에서 이미 설명했던 "openssl pkcs8 -topk8 -nocrypt -in ..." 명령어를 이용해 "BEGIN PRIVATE KEY"/"END PRIVATE KEY" 쌍의 pkcs8 포맷으로 바꿀 수 있습니다.<br /> <br /> 그리고 보는 바와 같이 openssl은 별도의 공개키 파일을 생성해 주지 않으므로 다음과 같은 절차를 거쳐 개인키로부터 PEM 포맷의 공개키 파일을 구할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>openssl req -newkey rsa:1024 -x509 -key id_rsa.pem -out id_rsa_pub.cer -days 365</span> C:\temp> <span style='color: blue; font-weight: bold'>type id_rsa_pub.cer</span> -----BEGIN CERTIFICATE----- MIICeDCCAeGgAwIBAgIJAOhRZGwyoUUfMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNV ...[생략]... V0xJmS8tWx60cv61 -----END CERTIFICATE----- </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>openssl x509 -pubkey -noout -in id_rsa_pub.cer > id_rsa_pub.pem</span> C:\temp> <span style='color: blue; font-weight: bold'>type id_rsa_pub.pem</span> -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1lIa+momVo88Pc9bHmrlRG3DS ...[생략]... 2RZlKI/NQflK9vvtBQIDAQAB -----END PUBLIC KEY----- </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1213
(왼쪽의 숫자를 입력해야 합니다.)