본문 바로가기

Java

handshake_failure 오류 해결하기 개인정보 때문에 API URL호출을 Server에서 하게 작업을 진행하였다. 작업 후 오류 코드가 나와서 정리해보려고 한다. 1. System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2"); 오류코드는 달랐는데 정확한 코드를 확인하려면 서버 롤백을 해야하는데 지금 할 수 없다... 검색해봐도 나와 동일한 오류코드가 확인이 안되서 패스... 관련 클래스 상단에 추가해주자... static { System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2"); } 2. JAR 추가 글을 쓰게 된 계기인 handshake_failure 오류. 검색해보면 TLS 버전문제로 발생한다고 되어있다. 오라클에서 JAR를.. 더보기
Spring4 웹 어플리케이션 생성하기 책을 보면서 작업하는데, 내용이 약간 달라서 수정하였다.윈도우에서 2가지 방법으로 생성해 보겠다.환경은 다음과 같다.jdk1.8.0_45Spring Tool Suite Version: 3.9.2.RELEASESTS를 설치하고 툴바에서 Dashboard를 클릭하거나 메뉴에서 [Help>Dashboard]를 클릭하면 다음 화면이 나온다. 여기서 오른쪽 하단에 보면 Manage 안에 IDE EXTENSIONS 버튼을 누르면 다음과 같은 새창이 뜬다. 이미 설치하여 보이지는 않는데 다음 두개의 라이브러리를 설치하자.Groovy Compiler 2.4Groovy-Eclipse FeatureGradle IDE참고 문서에는 이름이 다르게 나와있으나 비슷한 것으로 설치해서 진행한다. 원본의 라이브러리는 다음과 같다.G.. 더보기
logback library Exception 출력 간만에 로그 설정을 하면서 logback이 좋다고 해서 사용해보려고한다.일단 대표적인 장점으론 속도가 log4j보다 10배정도 빠르다고 한다. 설정 중 문제가 생겼다. 설정한데로 로그는 잘 나오는데, 라이브러리에 있는 항상 보던 로그들이 하나도 찍히지 않는다. 해결방법은 configuration 태그에 debug를 true로 설정하면 된다. logger로 설정하면 된다고 되어 있는데, debug 속성값이 디폴트가 false로 확인할 때는 library Exception이 출력되지 않았다. debug 속성값을 true하는게 좋을 듯하다. 로그가 없으니 오류나도 확인할 방법이 없다. 하나하나 전부 로깅해보기에는 작업량이 많을 경우 비효율적이다. 참고 페이지https://stackoverflow.com/que.. 더보기
사용자가 만든 인증서로 인증 테스트 자바소스를 잘 정리한 페이지가 있어 링크를 남긴다. 참고 링크http://tjjava.blogspot.kr/2012/03/https.htmlhttp://docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.htmlhttp://www.java2s.com/Tutorial/Java/0490__Security/SSLContextandKeymanager.htm 위 링크에서 사용자가 만든 인증서로 인증하는 법만 정리 해보자. 작업 환경은 이클립스 + Maven Static Web Project 로 작업했다. 환경을 언급한 이유는 만들어 둔 인증서 파일의 경로를 맞추기 위해서인데, 인증서를 프로젝트 루트( / )에 넣어야 JAVA 실행 시.. 더보기
Portecle을 이용해 인증서 만들기 자바로 인증이 필요할 때 인증서를 만들어서 서로 인증하는 방법이 있다. 안드로이드에서 사용한다고 하는데 임포트된 라이브러리를 보니 기본 라이브러리들이라 구현해보기로 했다. 먼저 인증서가 필요한데 keytool 이라는 것도 있고 Portecle 이라는 것도 있다. keytool은 콘솔에서 실행하는 거라 좀 불편해보이고 Portecle은 jar 형태로 되어있는데 단축 아이콘을 만들어 실행하면 되니 더 편해보여 Portecle 로 만들어 보겠다. 다운로드: https://sourceforge.net/projects/portecle/ 다운로드 받고 실행하려면 다음과 같이 입력하면 된다.java.exe -jar portecle.jar -jar 가 없으면 실행되지 않으니 이부분 주의하면 된다. 나처럼 단축 아이콘을.. 더보기
simplecaptcha 한국어 음성 적용하기 simplecaptcha를 사용하여 보안 문자를 만들다가 문득 생각해보니 음성이 영어다... 웹접근성을 생각하면 한국어 음성이 필요하다. 인터넷을 찾아보니 2가지 소스가 나왔는데, 스프링 부트를 이용했다는 건 뭘한건지 모르겠는데 안된다. 그리고 직접 음성 소스를 넣은게 있어서 참고했다. 직접하려면 삽질좀 했을거 같은데 다른 사람이 만들어 둔 내용을 참고하니 역시 편하다. 나는 숫자 5개를 이용하여 보안 문자를 만들 것이다. 먼저 이미지를 만들어보자. public static void makeTextImage(HttpServletRequest request, HttpServletResponse response, String textType) throws ServletException, IOException.. 더보기
Static Import 에 대해 전자정부표준프레임웍을 점점 많은 곳에서 사용하는 것같아서 사용해보려고 설치를 했다. 근데... 내가 현재 사용하는 환경과 좀 다르다... 그래서 구조와 셋팅을 보려고 찾아보니 모르던 코드를 발견했다. 그것은 import static ... 이다.궁금해서 검색을 해보니 자바 1.5에서 추가된 기능이란다. 난 1.6부터 시작했는데... 왜 몰랐지.... 특징은 이렇다. 다른 클래스의 맴버 변수나 맴버 메서드를 경로를 생략하고 사용할 수 있다. Static Import 로 선언하기 위해서는 static으로 정의된 맴버여야한다. 예를 들어import static java.lang.Math.PI; 이렇게 선언했다고 하자. 위에서 보통은 static 빼고 맨 끝에 PI 도 없을 것이다. 일반적인 import문을 정.. 더보기
captcha를 만들어보자 captcha를 공부해보려고 여기저기 기웃거리다가 simple captcha로 한번 테스트 페이지를 만들어보려고 작업했다. 근데 문제가 텍스트는 아주 잘되는데 오디오는 방법을 잘 모르겠다. 그래서 좀 더 여기저기 기웃거리다 텍스트로된 것을 직접 만든 소스를 발견했다. 소스를 보니 생각보다 간단하게 작성이 됬다. 그래서 가져와서 조금 수정해보았다. 출처: http://zetcode.com/tutorials/jeetutorials/captcha/ import java.awt.Color;import java.awt.Font;import java.awt.GradientPaint;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.i.. 더보기
java.security.InvalidKeyException: Illegal key size 오류 암호화 테스트 중 java.security.InvalidKeyException: Illegal key size 오류가 났다.SHA256은 그냥 바로 되던데, AES256은 오류가 난다. 오류 코드를 검색해보면 바로 해결방법이 나오지만, 왜그런지 해결이 안됬다. 몇번의 삽질 끝에 원인을 찾았는데, 컴파일하는 jdk버전이 다른 버젼으로 맞춰져있었다... 이런 삽질은 고만 해야할텐데... 해결방법은 간단한데, 미국에서 일정 이상 암호화 기술은 수출금지를 시켰단다. 그래서 필요한 파일만 다운받아 사용하면 되는 것이다. 수출 금지인데 다운받으면 바로 해결되는 것도 좀 이상하긴 한데... 오라클 홈페이지에 가면 jar파일이 있는데 jdk 버전별로 다운 받아서 넣어주자. jdk가 설치된 경로 밑에 jre/lib/se.. 더보기
문자열 패턴 분석 정규식 비밀번호 패턴을 읽어 숫자 알파벳 대소문자 특수 문자를 사용했는지 분석하기 위한 소스가 필요했다. 기존에 만들어 저있는 것은 1바이트씩 비교해서 만든 것이라 좀 더 눈에 잘 들어오게 만들어보기위해 요즘 정규식을 이용해보고 있다.Pattern, Matcher 클래스를 이용하니까 간단하게 되서 참 편하다. 먼저 알파벳, 숫자, 특수문자를 구분하는 함수를 만들어보자.public static boolean isAlnumPunct(String str){boolean bResult = false;Pattern pt = Pattern.compile("[\\p{Alnum}\\p{Punct}]{1,}");Matcher mc = pt.matcher(str);if(mc.matches()){bResult = true;}ret.. 더보기