본문 바로가기

스크린 스크래핑

C#을 이용한 홈택스 공인인증서 자동 로그인 구현

국내에서 발급되는 공인인증서를 이용하여 홈택스에 자동으로 로그인되는 C# 개발에 관하여 알아 보겠습니다.

 

홈택스 로그인 화면

 

국내 공인인증서 규격에 대해서는 전자서명인증관리센터(http://www.rootca.or.kr)의 기술규격 메뉴를 참고 바랍니다.

 

홈택스는 아이디/비밀번호 로그인을 지원하지만, 일부 메뉴에 대해서는 공인인증서 로그인을 필요로 하고 있습니다.

사실, 법이 개정되고 개인식별 수단으로서의 공인인증서는 강제성은 없고 기관 및 업체들의 자율성에 맡겨지고 있습니다. 따라서 캐캐묵은 옛날 기술인 공인인증서를 계속 가져가는 것도 비상식적이지만, 그렇다고 20년 넘도록 온 국민의 사랑(?)을 받아온 공인인증서 기술을 완전히 걷어 내는 것 또한 만만치 않을 것이라 사료됩니다.

본론으로 들어가겠습니다.

공인인증서를 암/복호화 및 서명/검증하려면 아래 기술들에 대해서 어느 정도의 지식이 있어야 합니다.

SEED 알고리즘

RSA 암/복호화 알고리즘 및 그에 따른 부수적인 지식

RSA 서명 알고리즘

홈택스는 암호화에 RSASSA-PKCS1-V1_5 스키마를 사용하고 있습니다.

해쉬 알고리즘은 Sha256입니다.

로그인에 필요한 변수들을 살펴보겠습니다.

 

홈택스 공인인증서 로그인 개발에 필요한 변수들

뭔가 좀 많이 복잡해 보이지요?

logSgnt: 건강보험공단처럼 서명/검증에 필요한 const 문자열이라고 이해하시면 됩니다.

다만, 몇 가지 변수들이 좀 더 추가 되었습니다.

Base64 인코딩된 서명 검증용 문자열이 개인키를 통하여 서명이 되고나면, 3가지의 추가된 변수들이 합쳐집니다.

이후에 전체 문자열이 다시 base64로 인코딩되게 됩니다.

randomEnc: 공인인증서 개인키에서 추출되는 정보입니다.

cert: 공인인증서 정보를 base64로 인코딩하여 전송하게 됩니다.

화면 해상도를 나타내는 변수들 외에 3개의 변수가 더 있느네, 큰 의미를 두지 않는 것 같습니다.

공인인증서 스크린 스크래핑 개발 관련 문의는 rhombask@지메일로 주시면 됩니다.

 

EDIT: 2023년 9월

이제는 공동인증서 로그인 처리만 전문적으로 대행해주는 서버가 출시되었습니다.

https://tauth.kr 을 참고하세요.