기본 콘텐츠로 건너뛰기

2022의 게시물 표시

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 -keystore cacerts.jks -keypass changeit

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 -keystore cacerts.jks -keypass changeit

전자서명, 인증서 파일 종류 별 확장자

확장자는 그 파일의 특성이 무엇인지 쉽게 알아 보기 위해서 붙이는 것이지만, 바이너리 이진 파일에 .txt 확장자를 붙일수도 있는 것처럼 말그대로 이름일 뿐이다. 그래서 확장자 보다는 해당 파일의 실제 형식을 확인하는 것이 중요하다. .pem   PEM (Privacy Enhanced Mail)은 Base64 인코딩된 ASCII 텍스트 이다. 파일 구분 확장자로 .pem 을 주로 사용한다.  노트패드에서 열기/수정도 가능하다. 개인키, 서버인증서, 루트인증서, 체인인증서 및  SSL 발급 요청시 생성하는 CSR 등에 사용되는 포맷이며, 가장 광범위하고 거의 99% 대부분의 시스템에 호환되는 산업 표준 포맷이다. (대부분 텍스트 파일) .crt 거의 대부분 PEM 포맷이며, 주로 유닉스/리눅스 기반 시스템에서 인증서 파일임을 구분하기 위해서 사용되는 확장자 이다. 다른 확장자로 .cer 도 사용된다. 파일을 노트패드 등으로 바로 열어 보면 PEM 포맷인지 바이너리 포맷인지 알수 있지만 99% 는 Base64 PEM 포맷이라고 봐도 무방하다. (대부분 텍스트 파일) .cer 거의 대부분 PEM 포맷이며, 주로 Windows 기반에서 인증서 파일임을 구분하기 위해서 사용되는 확장자 이다. crt 확장자와 거의 동일한 의미이며, cer 이나 crt 확장자 모두 윈도우에서는 기본 인식되는 확장자이다. 저장할때 어떤 포맷으로 했는지에 따라 다르며, 이름 붙이기 나름이다. .csr Certificate Signing Request 의 약자이며 거의 대부분 PEM 포맷이다. SSL 발급 신청을 위해서 본 파일 내용을 인증기관 CA 에 제출하는 요청서 파일임을 구분하기 위해서 붙이는 확장자 이다. (대부분 텍스트 파일) .der Distinguished Encoding Representation (DER) 의 약자이며, 바이너리 포맷이다. 노트패드등으로 열어 봐서는 알아 볼수 없다.  바이너리 인코딩 포맷을 읽을수 있는 인증서 라이브러리를 통해서만 내용 확인이 가능하다.  사

Docker compose 설치

1. 설치 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 2. 권한 부여 sudo chmod +x /usr/local/bin/docker-compose 3. 설치 버전 확인 docker-compose --version * 설치 버전 확인 시 아래와 같은 오류 발생 시 docker-compose: error while loading shared libraries: libz.so.1: failed to map segment from shared object 방법 1. sudo mount /tmp -o remount,exec /tmp 접근 권한 때문에 발생한 문제이므로 /tmp 를 remount하여 해결. 하지만 tmp 폴더에 exec 권한은 보안상 권장하지 않는다고 함. 방법 2. ~/.bashrc or ~/.bash_alias 파일에 alias 등록 alias docker-compose="TMPDIR=${HOME}/tmp docker-compose"

Maven java doc 생성 시 클래스 중복해서 나오는 경우

coinfiguration에 " ${basedir}/src/main/java " 로 대상 소스를 지정해주지 않으면 프로젝트에 산재되어 있는 다름 클래스들도 java doc이 생성되어 동일한 클래스들이 나오는 문제가 발생한다. org.apache.maven.plugins maven-javadoc-plugin 3.3.1 true ${basedir}/src/main/java ko_kr utf-8 ${project.name} ${project.version} ${project.name} ${project.version} com.console:com.console.* attach-javadocs jar

TPS 정의

0. TPS : 초당 처리 가능한 트랜잭션 수 1. 기본 TPS 산정 : 피크 타임 기준으로 사용자의 수(=유지되고 있는 세션 수)를 기준으로 산정 2. 순간적으로 발생하는 부하를 고려하여 기본 TPS * 1.3 보정 공식으로 말씀드리면 다음과 같습니다. TPS = 실제 사용자 / 평균 응답 시간 -> 실제 사용자 = TPS * 평균 응답 시간 -> TPS = 동시 사용자 / 요청 주기 -> 동시 사용자 = 실제 사용자 + 유휴 사용자 -> 동시 사용자 = TPS * 요청 주기 -> 동시 사용자 = TPS * (평균 응답 시간 + 평균 싱크 시간) -> 실제 사용자 = 동시 사용자 * 평균 응답 시간 / 요청 주기 -> 실제 사용자 = 동시 사용자 * 평균 응답 시간 / (평균 응답시간 + 평균 싱크 시간) -> 유휴 사용자 = TPS * 평균 싱크 시간 -> 요청 주기 = 평균 응답 시간 + 평균 싱크 시간

Oracle 명령어 모음

-- 인덱스 조회 SELECT table_name, constraint_name, constraint_type         FROM   USER_CONSTRAINTS         WHERE TABLE_NAME ='PTL_PERSONAL_TILE_PORTLET'; -- PK 제거 ALTER TABLE PTL_PERSONAL_TILE_PORTLET DROP CONSTRAINT IDX_PTL_P_TILE_PORTLET_PK CASCADE; -- 인덱스 생성 CREATE UNIQUE INDEX PK명 ON 테이블명 (컬럼명1, 컬럼명2....); -- PK 생성 ALTER TABLE PTL_PERSONAL_TILE_PORTLET ADD (CONSTRAINT IDX_PTL_P_TILE_PORTLET_PK PRIMARY KEY (USER_ID, PAGE_ID, TILE_SEQ)); -- 계정 생성 CREATE USER nextree IDENTIFIED BY nextree -- 계정 권한 GRANT connect, resource, dba TO [user_name]; -- 계정삭제 drop user 사용자계정 cascade; -- 락걸린 테이블 확인 SELECT  DO.OBJECT_NAME, DO.OWNER, DO.OBJECT_TYPE, DO.OWNER,         VO.XIDUSN, VO.SESSION_ID, VO.LOCKED_MODE FROM    V$LOCKED_OBJECT VO, DBA_OBJECTS DO WHERE   VO.OBJECT_ID = DO.OBJECT_ID; -- 해당 테이블에 LOCK 이 걸렸는지. SELECT A.SID, A.SERIAL#, B.TYPE, C.OBJECT_NAME FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C WHERE A.SID = B.SID AND B.ID1 = C.OBJECT_ID AND B.TYPE='TM'

리눅스 명령어

- 리눅스 profile 호출 순서 /etc/profile → /etc/profile.d/*.sh (/etc/profile.d 안의 스크립트.) (user dir)~/.bash_profile → ~/.bashrc → /etc/bashrc /.profile ?? - 검색 1. 전체 검색 find / -name '.bash*' -ls 2. 현재 디랙토리 검색 find -name '*.java' -ls - 계정 삭제 [root@localhost tomato]# userdel -r testuser - alias /etc/profile 파일 ... alias hstart="service httpd start" alias wstart="/home/tomcat/bin/startup.sh"

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 - 타임아웃의 이해