2020/03

RSA 알고리즘을 이용하면 공개키/개인키 쌍이 생성된다. 우리는 암호화 통신을 이용하여 통신할 때 공새키를 사용자들에게 공개하게 되는데, 이 공개키가 해당 도메인(ex naver.com)에서 발행한것에 대한 보징을 받기 위해 인증기관(CA)에 공개키를 등록하게 된다. 이는 마치 인감도감을 만들어서 동사무소에 인감을 등록하는 과정과 같은데, 인감도장의 내용을 동사무소에 등록하면 동수마소는 이것이 내가 발행한 인감이라는 것을 보증하여 준다. 공개키(인감도장, 인증서) / 인증기관(동사무소, CA) 여기서 인증기관(CA)은 나의 공개키(인증서)를 보증하기 위해서 서명을 하게 된다. 여기서 서명이란 나의 공개키의 해쉬된 값(SHA256)을 인증기관의 개인키로 암호화 한 결과값을 뜻한다. ⇒ 디지털 서명(Digi..
2020/03/10 - [그 외 ... (정리해야함)/꿀팁] - 인증서 해쉬와 디지털 서명(Hash and Digital Signing) Self Signed Certificate(SSC)란? 인증서(digital certificate) ⇒ 인증기관의 개인키로 인증서 소유자의 공개키를 전자서명한 데이터 모든 인증서는 발급기관(CA)가 있어야지만 최상위 인증기관(ROOT CA)는 서명해줄 상위 인증기관이 없으므로 개인키로 스스로의 인증서에 서명하여 최상위 인증기관 인증서를 만든다. 이렇게 스스로 서명한 ROOT CA 인증서를 Self Signed Certifiacte라고 한다. 브라우저에서는 유명한 ROOT CA들의 인증서를 신뢰하는 CA로 미리 등록해 놓기 때문에, 우리가 만든 인증서는 신뢰할 수 없는 ..
PEM 인코딩된 인증서 정보를 출력 $ openssl x509 -text -noout -in 인증서.pem DER 인코딩된 인증서 정보를 출력(-inform der 옵션 추가) $ openssl x509 -text -noout -in 인증서.der -inform der 인코딩 변환(DER -> PEM) $ openssl x509 -inform der -outform pem -in 인증서.der -out 인증서.pem
PEM -> DER(바이너리) $ openssl x509 -in 원본인증서.pem -out 저장인증서.der -outform DER (인증서) $ openssl rsa -in 원본개인키.pem -out 저장개인키.der -pubout -outform DER (개인키) DER/CER(바이너리) -> PEM $ openssl x509 -in 원본인증서.cer -out 저장인증서.pem -outform pem $ openssl x509 -in 원본인증서.der -out 저장인증서.pem -inform der -outform pem pkcs#12 -> crt $ openssl pkcs12 -in pkcs12.p12 -clcerts -nokeys -out 저장인증서.crt privateKey + 인증서 -> pf..
RHEL/CentOS Linux는 기본 패키지에 포함되어 있으므로, 별도 설치가 필요 x Windows나 기타 Unix에서는 별도의 설치가 필요함 개인키(PrivateKey) 생성 암호화하지 않은 개인키 생성 $ openssl genrsa -out private_key.pem 1024 3DES로 암호화된 개인키 생성(PassPhrase를 입력해야 한다.) $ openssl genrsa -des3 -out enc_private_key.pem 1024 기존 개인키에 패스워드 추가 $ openssl rsa -des3 -in private_key.pem -out enc_private_key.pem 기존 개인키에 패스워드 제거 $ openssl rsa -in enc_private_key.pem -out priva..
프록시란? 프록시(Proxy)란 '대리'라는 의미를 갖고 있으며, 서버와 서버사이의 중계기역할을 한다. 보안상의 이유로 직접 통신할 수 없는 두 점사이에서 대리로 통신을 수행하는 기능을 가리켜 '프록시'라고 하며, 프록시서버로 부른다. Forward 프록시 프록시 서버를 '클라이언트 호스트들과 원격 리소스 사이'에 위치시키는 방법 프록시 서버는 클라이언트가 요청한 리소스를 원격 리소스에서 가져와서 클아이언트에게 돌려주는 역할을 수행한다. 만약 캐시가 있다면, 다음 요청시에는 캐시된 데이터를 제공해준다. 이 방식은 대역폭을 감소시킬 수 있다는 것과 접근 정책 구현에 있어 다루기 쉬우면서 비용도 저렴하다는 장점이 있어 기업환경에서 많이 사용한다. ex) 기업 사내망에서 특정 url에는 접근을 못하게 하는 방..
curl -vI https://www.naver.com 옵션관련 -I : 헤더요청만 받는다. HEAD메서드를 보내는 것과 동일 -v(verbos) : 동작하면서 자세한 옵션을 출력한다. curl -vI host 를 이용하면 host에 대한 인증서 정보를 볼 수 있다. https connection과정 정보도 같이 출력된다. 서비스를 할 때, certification 관련 expceion이 났다면 curl을 통해 간단하게 인증서가 정상인지 확인해 볼 수 있다.
restTemplate을 이용해서 response body를 String.class로 변환했을 때 한글이 깨지는 현상이 있었다. 이상하게도 여태까지 이런적은 없었는데.. 특정한 프로젝트에서만 발생하였음.(너무오래되서 전역적인 설정은 기억이안남...) 일단 급하게 처리한 방법은 아래와 같다. restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8"))); restTemplate.getForObject(url, String.class); restTemplate이 가지고있는 messageConverter List의 맨 앞에 StringHttpMessageConverter를 넣어주는 거다. (r..
API를 만들다보면, Timeout에 관한 얘기들을 많이 듣곤한다. 일정 시간동안 응답이 없으면, 실패처리해주세요. 몇 초 동안 기다렸다가 응답이 안오면, retry를 해주세요. 등등 처음에 Timeout의 종류를 들으면 상당히 헷갈리는데, 헷갈릴때마다 참고하기 위해.. 정리를 해둔다. Connection Timeout 클라이언트가 어떤 사유로 인해서 서버에 접근자체를 실패했을시 적용되는 것이 Connection Timeout이다. 접근을 시도하는 시간제한이 Connection Timeout이 된다. 예를 들어, Connection Timeout이 5초인 Apache 서버가 있다. 그런데 이 Apache서버에 요청이 몰려서, 요청이 처리되려면 상당시간 기다려야 한다.(5초 이상) 그렇게 되면 클라이언트에..
깡냉쓰
'2020/03 글 목록 (2 Page)