기본 콘텐츠로 건너뛰기

keytool 사용법

keytool.exe -genkey -alias juheon -keyalg RSA -keypass 1234qwer -storepass 1234qwer -keystore juheon.jks  keytool.exe -export -alias juheon -storepass 1234qwer -file juheon.cer -keystore juheon.jks  keytool.exe -importkeystore -srckeystore juheon.jks -destkeystore juheon.key.p12 -deststoretype PKCS12  D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert  D:\Java\32bit\jdk1.5.0_22\bin\keytool.exe -import -alias tsasample -keystore  D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert -file D:\workspace\Servers\tsa-server-web-config\tomcat.cer  keytool -import -alias somansa -keystore C:\Program Files\Java\jdk1.8.0_102\jre\lib\security\cacert -file c:\somansa.cer #인증서 생성  keytool -genkey -alias keyAlias -keyalg RSA -keypass changeit -storepass changeit –validity 9999 -keystore keystore.jks  keytool -export -alias keyAlias -storepass changeit -file server.cer -keystore keystore.jks  keytool -import -v -trustcacerts -alias keyAlias -file server.cer ...

Linux 기반 CPU 100% 사용 명령어

리눅스 기반에서 CPU 부하 시 auto scaling을 테스트 하기 위해 간략하게 100% CPU 부하를 줘야 할 경우 사용하는 yes명령어를 이용한다.  ( stress  와 같은 툴을 설치하면 상세하게 CPU 사용율을 제어할 수 있다) * CPU 100% 사용 yes > /dev/null & * 종료 killall yes

HTTP Authentication Header types

  HTTP Authentication Header types Basic client 인증받기 위한 정보, 아이디와 암호를 Base64로 인코딩한 값(base64(id:pw))을 토큰으로 사용. (RFC 2617) Bearer 인증이 이미 완료된 사용자에 의해 정보를 획득하기 위한 토큰으로 사용. JWT, OAuth등에서 정보 요청 시 사용. (RFC 6750) Digest nonce를 이용해 relay attack을 방지하기 위한 인증. 서버에서 난수 데이터 문자열을 클라이언트에 보낸다. 클라이언트는 사용자 정보와 nonce를 포함하는 해시값을 사용하여 응답한다 (RFC 7616) (참고: https://en.wikipedia.org/wiki/Digest_access_authentication) HOBA 전자 서명 기반 인증 (RFC 7486)

JDBC driver statement timeout

 JDBC Driver의 socket timeout은 DBMS 비정상 종료, network 장애 발생 시 무한정 대기하지 않기 위해 설정하는 값임. statement의 timeout보다는 길게 설정해야함. driver timeout을 설정하지 않는 경우 os timeout 시간까지 대기함. Oracle, Mssql 가 유사. mysql, driver 가 유사. 1. Oracle JDBC driver query timeout. - Statement 객체 생성 - Statement 객체에서 쿼리 실행 - Timer thread에 statement 객체 등록(classloader당 하나의 timer thread) - 등록된 Statement timeout 발생 - 등록된 Statement의 cancel() 호출 2. MySql JDBC driver query timeout. - Statement 객체 생성 - Statement 객체에서 쿼리 실행 - Timer thread에 statement 객체 등록(connection당 하나의 timer thread) - 등록된 Statement timeout 발생 - Timer thread에서 쿼리 실행 취소요청을 위한 connection 생성 하여 DB에 쿼리 취소요청 * 출처:  JDBC Internal - 타임아웃의 이해

Springboot 에서 mvn test 실행 시 test가 실행되지 않는 경우

spring boot version: spring boot version: 2.5.1 증상: 올바른 test package 경로와 class 명(Test*.java, *Test.java .etc)을 지정했음에도 springboot maven test 실행 시 test가 진행되지 않음. [INFO] ------------------------------------------------------- [INFO]  T E S T S [INFO] ------------------------------------------------------- [INFO] [INFO] Results: [INFO] [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 원인: junit5 버전이 올라가면서 패키지 경로가 변경됨. ("org.junit.Test"에서 "org.junit.jupiter.api.Test"로 변경) 방법 1: junit-vintage-engine dependency를 추가 <dependency> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <scope>test</scope> </dependency> 방법 2: Test annotation class를 "org.junit.Test"에서 "org.junit.jupiter.api.Test"로 변경

Gradle 인증 설정

사설 artifactory를 구축하여 사용하면서 인증을 통해 접근 가능하다록 하는 경우 build.gradle 파일에 계정 설정이 필요하다. build.gradle repositories {     maven {     credentials  {             username = "${mavenUser}"             password = "${mavenPassword}"         } url 'https://pms.initech.com/artifactory/libs-release' authentication {                                 basic(BasicAuthentication) } } } 사용자 계정정보를 형상관리 서버에 노출시키지 않기 위해 별도로 분리한다. C:\Users\{user_name}\.gradle\gradle.properties mavenUser=userid mavenPassword=userpw

ANT sftp upload

 <?xml version="1.0" encoding="UTF-8"?> <project name="MyProject" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant"> <path id="maven-ant-tasks.classpath" path="D:\ant\lib\maven-ant-tasks-2.1.3.jar" /> <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" classpathref="maven-ant-tasks.classpath" /> <property name="ssh_user" value="user"/> <property name="ssh_pw" value="1111"/> <!-- ======================================================== --> <!-- app 배포 --> <!-- ======================================================== --> <target name="DEV_PAYMENT_RELEASE" depends="dev_ssh_host, set_property_payment, release" /> <target name="DEV_JSP_RELEASE" depends="dev_ssh_host, s...

FIPS

FIPS FIPS 지원 제품을 의무적으로 사용해야 하는 환경에서 이 애플리케이션을 운영하거나 FIPS 인증 암호화 모듈을 통한 보안을 구축하고자 하는 경우 FIPS 모드를 설정해야 합니다. 이 애플리케이션은 FIPS 가이드라인을 도입한 정부 기관 및 기업에 필요한 FIPS(Federal Information Processing Standard: 연방 정보처리 규격) 140-2 암호화 사용을 지원합니다. FIPS란? FIPS는 컴퓨터 보안 제품 지침에 대한 일련의 표준입니다. FIPS 인증은 암호화를 사용하는 제품의 모든 부분에 적용됩니다. FIPS 인증 제품은 연구소를 통해 FIPS 140-2(암호화 모듈 보안 요건 표준)를 준수하며 하나 이상의 FIPS 인증 알고리즘을 지원하는 것으로 검증된 제품입니다. 여러 국가의 정부 기관 및 몇몇 민영 기업은 FIPS 인증 제품을 의무적으로 사용하고 있습니다. FIPS 모드란? FIPS 모드란 FIPS 승인 알고리즘만 사용하는 구성을 말합니다. 이 애플리케이션을 FIPS 모드에서 운영하도록 구성하면 애플리케이션은 브라우저와 API 인터페이스 모두에서 보안 콘솔과 스캔 엔진 그리고 보안 콘솔과 사용자 간의 통신을 암호화하도록 FIPS 인증 암호화 라이브러리를 구현합니다. FIPS 단계 FIPS 140-2 에서는  레벨 1  에서  레벨 4  까지 4개의 단계가 있다 레벨 1  : 가장 낮은 수준이며, 최소한의 조건만 충족 레벨 2  : 암호 모듈에 접근하지 못하도록 장치가 되어있으며, 외부 침입자가 접근하였을 경우 흔적이 남도록 되어있음. 암호 모듈에속한 소프트웨어나 펌웨어가 표준 상용 OS에서 동작할수 있어야함. 레벨 3  : 외부 침입자가 물리적으로 접근하였을 경우 저장된 암호키를 삭제함, 암호 모듈에속한 소프트웨어나 펌웨어가 표준 상용 OS에서 동작할수 있어야함. 레벨 4  : 암호 모듈 보호장치의 내부로 침입하기위해 물리적 또는 전기적 접근 시도...