기본 콘텐츠로 건너뛰기

OpenSSL 이란 openssl update

SSL이란 Secure Socket Layer로 월드 와이드 웹 브라우저와 웹 서버 간에 데이터를 안전하게 주고 받기 위한 업계 표준 프로토콜을 의미한다.

: 오픈소스 라이브러리(OpenSSL)
공식 홈페이지: https://www.openssl.org/

OpenSSL 사용법
http://roiztoy.blogspot.kr/2013/11/openssl.html

SSL서비스 구축 및 OpenSSL

http://wiki.tunelinux.pe.kr/pages/viewpage.action?pageId=884976

명령어 : http://repien.tistory.com/36

1) openssl 버전 확인
openssl version

2) 키 생성
openssl genrsa -des3 -out 키이름.key 1024 : 3DES로 암호화. 비밀번호 설정 필요.

3) 암호화 하지 않고 키 생성
openssl genrsa -out 키이름.key 1024


3-1) 비밀키로 공개키 생성
openssl rsa -in 비밀키명.key -pubout -out 공개키명.key


4) 기존 비밀키에 패스워드 추가
openssl rsa -in out 키이름.key -des3 -out 새키이름.key

5) 기존 비밀키에 패스워드 제거
openssl rsa -in 키이름.key -out 새로운키이름.key

6) 키 내용 확인
openssl 키종류 -noout -text -in 키이름.key
ex) openssl rsa -noout -text -in 키이름.key


7) 자체 서명 인증서 생성
openssl req -new -key 키이름.key -x509 -out 인증서이름.crt
openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crt


Enter pass phrase for test.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: 국가 코드(2자리)
State or Province Name (full name) [Some-State]: 주 / 도
Locality Name (eg, city) []: 시
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 회사명 등
Organizational Unit Name (eg, section) []: 부서 등
Common Name (e.g. server FQDN or YOUR name) []: 이름이나 서버 주소
Email Address []: 이메일 주소



8) 인증서 확인
openssl x509 -noout -text -in 인증서파일.crt
openssl x509 -in ca.der -inform DER -text (DER 포맷인 경우)

9) DSA key 생성

(1) parameters 생성
openssl dsaparam -out 파라미터.pem 2048

(2) key 생성
openssl gendsa -des3 -out 키이름.key 파라미터.pem

10) CSR생성 (인증서 서명 요청을 위해 필요)
openssl req -new -key 키이름.key -out csr이름.csr

10-1) CSR 확인
openssl req -noout -text -in csr이름.csr



11) pkcs12 변환
openssl pkcs12 -export -in 파일명 -inkey 키이름.key -out pfx명.pfx


12) 인증서 인코딩 포멧 변경
- openssl 이 생성하는 인증서의 인코딩은 발급 시 옵션을 주지 않으면 디폴트가 PEM (base64 encoding)이다.
- Java 등에서 사용하기 위한 DER 포맷(바이너리)으로 변경은 다음과 같이 수행한다.
openssl x509 -in ca.crt -out ca.der -outform DER

업데이트:
참조 사이트http://lifepolio.tistory.com/38

### 주요 디렉토리 리스트

/usr/bin/  ( 기존 openssl 바이너리 파일 위치 )

/root/      ( 기존 openssl 바이너리 백업할 위치 )

/usr/local/ssl  ( openssl 소스 빌드 완성되면 생성되는 디렉토리 )

/usr/loacl/src  ( wget으로 openssl 다운로드 할 위치 )


/usr/local/ssl/bin ( 새롭게 반영할 openssl 바이너리 파일 위치 )

### 설치 전 확인 사항


1. openssl 버전 확인

- 1.0.1s 버전이 아니면 모두 업데이트 대상
- openssl version

2. gcc 프로그램 설치 여부

- 현재 업데이트 할 버전은 소스설치로 진행하기 때문에 컴파일시 gcc 필요
- rpm -qa | grep gcc
- gcc 프로그램이 없다면 yum install gcc 입력


### openssl wget 명령어를 이용한 소스 다운로드

1. 다운로드 받을 디렉토리 이동

- cd /usr/local/src

2. openssl 다운로드

- wget ftp://ftp.openssl.org/source/openssl-1.0.1s.tar.gz

3. openssl 압축 해제

- tar xzvf openssl-1.0.1s.tar.gz


### openssl 빌드 진행

1. openssl 소스 설치 디렉토리 이동

- cd openssl-1.0.1s

2. ./config 실행

- ./config 입력 ( config 아닙니다 )

3. make 실행

- make 입력 ( ./make 아닙니다. )

- 약 1~5분 실행


4. make install 실행

- make install 입력 ( ./make install 아닙니다. )

- 약 1분 진행


### openssl 적용

1. 빌드 진행후 /usr/local/ssl 생성 확인

2. openssl 버전 확인

- openssl version 입력
- 여전히 과거 버전이 적용되어 있다.

3. openssl 바이너리 파일 위치 확인

- which openssl 입력 ( 대부분 /usr/bin/openssl 위치에 있음 )

4. 기존 openssl 바이너리 파일 백업

- mv /usr/bin/openssl /root/

5. 빌드된 openssl 실행파일 적용

-  링크걸기 or 복사하기

-  ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
-  cp /usr/local/ssl/bin/openssl /usr/bin/openssl

-  둘중 한가지 선택 후 실행
-  본 문서에서는 링크로 진행


6. openssl 버전 확인

- openssl version ( 1.0.1s 버전인지 확인 요망 )





### 추가적인 정보

1. 최신 버전의 openssl 사이트 주소

- ftp://ftp.openssl.org/source/   ( 최신 버전 하나씩 업로드 되어 있음 )

댓글

이 블로그의 인기 게시물

톰캣 세션 타임 아웃 설정

web.xml 파일이 있습니다. 이 파일을 열어서 session이라고 검색해 보십시오. <session-config>   <session-timeout>360</session-timeout> </session-config> 위 단락을 찾을 수 있습니다. session-timeout 시간 360이 바로 자동로그아웃 세션 시간입니다.  단위는 분이고요. 30분으로 하고 싶으시면 30으로 바꿔서 저장해주시면 되는 것이죠~ Tomcat 내에서 Session Timeout 를 설정하는 우선 순위가 존재 한다. session.setMaxInactiveInterval() 프로그램내에서 time out 를 설정했을 경우 Web application 내의 WEB-INF/web.xml Tomcat 내의 conf/web.xml 실제로 Tomcat(conf/web.xml)내에 Default 로 설정되어 있는 것은 다음과 같다. < HttpSession 메서드 > getCreationTime() - 세션 생성 시간 getLastAccessedTime() - 마지막 요청 시간 setMaxInactiveInterval() - 최대허용시간 설정 (초) getMaxInactiveInterval() - 최대허용시간 invalidate() - 세션 제거 < 타임아웃 설정하기 > - 일정 시간 동안 요청이 없으면 세션을 제거한다  1. DD에서 전체 세션 타임아웃 설정       web.xml 1. DD에서 전체 세션 타임아웃 설정       web.xml <web-app ... >     <servlet>          ...     </servlet>     <session-config>         <session-timeout>30</session-timeout>

dmesg 메시지 실시간으로 보기

참조사이트 http://imitator.kr/Linux/556 # tail -f /var/log/messages # tail -f |dmesg //기본 2초 단위로 갱신 된다. # watch "dmesg | tail -f" //1초 단위로 갱신하면서 보여준다. # watch -n 1 "dmesg | tail -f" // 보여주는 줄을 20으로 늘린다. (기본 10줄) # watch -n 1 "dmesg | tail -f -n 20"

kernel Hello World

리눅스 커널 모듈 프로그래밍 가이드 참조:http://www.tldp.org/LDP/lkmpg/2.6/html/lkmpg.html 커널 모듈 가이드 아래 테스트는 우분투 14.04에서 테스트 되었습니다. 모듈 유틸리티 insmod:모듈을 커널에 적재한다. rmmod:커널에서 모듈을 제거한다. lsmod:커널에서 적재된 모듈 목록을 보여준다. depmod: 모듈간 의존성 정보를 생성한다. modprobe:모듈을 커널에 적재하거나 제거한다. modinfo rdma_ucm 모듈 정보 보기: #lsmod #cat /etc/modprobe.conf #modinfo ib_core 커널에서 제공하는 심볼 테이블 :커널 내부의 함수나 변수 중 외부에서 참조할 수 있는 함수의 심볼과 주소를 담은 테이블 #cat /proc/kallsyms 커널 모듈 제작해 보기 kernel ver 3.16 hello.c /*  *  hello.c - The simplest kernel module.  */ # #include <linux/module.h> #include <linux/kernel.h> int init_module(void) { printk("<1>Hello World 1.\n"); return 0; } void cleanup_module(void) { printk(KERN_ALERT "Goodbye world 1.\n"); } Makefile obj-m += hello.o all:         make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean:         make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean #make make -C /lib/modules/3