1. HTTPS와 HTTP

- HTTP : Hypertext Transfer Protocol로 즉 HyperText인 html을 전송하기 위한 통신규약을 의미한다.

- 마지막에 S를 붙인다면 Secure라는 뜻으로 보안이 강화된 통신규약을 의미한다.

- HTTP는 암호화가 되어있지 않은 방법으로 서버에 데이터를 전송하기 때문에 서버와 클라이언트가 서로 주고받는 메시지를 알아내기가 쉽다.

- 그러므로 로그인을 위해서 서버로 비밀번호나 계좌번호 등 중요한 데이터를 서버로 전송할 경우에는 HTTPS 프로토콜을 사용하여 통신하는 것이 중요하다.


2. HTTPS와 SSL

- HTTPS는 SSL 프로토콜을 기반으로 돌아가는 프로토콜 중 하나다.


3. SSL과 TLS

- SSL과 TLS는 같은 뜻으로 말하며 TLS1.0은 SSL3.0을 계승한다. 

- 하지만, TLS라는 이름보단 SSL이라는 이름으로 더 많이 사용되고 있다.


4. SSL이란 무엇일까?

- SSL 인증서란 클라이언트와 서버간의 통신을 제 3자가 보증을 해주는 문서이다.

- 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서를 전달한다. 그러면 클라이언트는 이 인증서를 보고 신뢰할 수 있는 사람인지 확인을 한 다음에 데이터를 보내는 등 다음 절차를 수행하게 된다.


* SSL를 사용하면 좋은 점

(1) 전달되는 내용이 다른 사람에게 노출되는 것을 막을 수 있다.

(2) 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버 인지 알 수 있다.

(3) 전달되는 내용이 악의적으로 변경되는 것을 막을 수 있다.


5. SSL에서 사용하는 암호화의 종류

(1) 대칭키

(2) 공개키


5-1. 대칭키

암호를 만드는 행위인 암호화를 할 때 사용하는 일종의 비밀번호를 키(key)라고 한다. 이 키에 따라서 암호화된 결과가 달라지기 때문에 키를 모른다면 암호를 푸는 행위인 복호화도 할 수 없다.


이 중, 대칭키 방식은 는 동일한 키로 암호화와 복호화를 할 수 있는 기법을 말한다.


ex. 암호화를 할 때 1234라는 값을 사용했다면, 복호화를 할 때도 1234를 입력해야 복호화가 완료되는 방식이다.


5-2. 공개키

대칭키 방식은 서로 같은 키를 공유하는 것이라고 위에서 설명했는데, 대칭키의 단점이 있다. 

암호를 주고 받는 사람들 사이에서 이 키(key)로 암호화하라고 사용자에게 전달하는 것이 어렵다는 점이다.

왜냐하면, 중간에 대칭키가 유출된다면 키를 획득한 공격자는 암호의 내용을 복호화하여 무슨 데이터를 전달하려고 했는지 알 수 있기 때문에 HTTPS를 쓰는 이유가 없어진다. 그래서 나온 방식이 바로 공개키 기법이다.


공개키 방식은 대칭키 방식과 다르게 두 개의 키를 가지고 시작한다. 

두 개의 키 중 하나를 비공개키(private key, 개인키/비밀키)라고 부르고 나머지 키를 공개키(public key)라고 말한다. 


비공개키는 자신만이 가지고 있고, 다른 공개키는 타인에게 제공한다. 그럼 내가 발행한 공개키를 받은 타인은 공개키를 이용하여 정보를 암호화하고, 암호화된 정보를 비공개키를 가지고 있는 나에게 다시 전달하면 나는 그 데정보를 복호화하여 확인할 수 있다. 

(클라이언트가 받은 키(key)를 가지고 1234(정보)를 암호화하여 서버에게 !@#$라는 text를 전달 → 서버는 클라이언트가 보낸 !@#$라는 단어를 비공개키로 복호화하여서 1234라는 것을 확인!) 

여기까지가 공개키의 기본 통신 방법이다.


이제 이 공개키 기법을 응용해보자. 

아깐 공개키를 가진 사람이 암호화해서 전달했으나, 이번엔 비밀키를 가진 사람이 비밀키로 암호화해서 공개키와 함께 암호화된 정보(!@#$)를 전송한다.


정보와 공개키를 획득한 사람은 공개키를 이용하여서 암호화된 정보를 복호화한다.

이 과정에서 공개키가 유출된다면 안되겠지만, 데이터를 보호하려는 목적이 아니고 서로의 신원을 확인하기 위한 방식이므로 유출되어도 상관이 없다. 

그러므로 이때, 암호화된 데이터를 공개키로 복호화 할 수 있다는 것은 해당 데이터가 공개키와 쌍을 이루는 비공개키에 의해서 암호화 되었다는 것을 의미한다. 


즉, 공개키가 데이터를 제공한 사람의 신원을 보장해주었다는 것이다.

이것을 우리는 '전자서명'이라고 부른다. 




6. SSL 통신 주고 받는 과정

즉, 위에서 말한 것과 같이 상대방의 공개키를 획득하여 암호화해서 상대방에게 암화된 정보를 제공하고 신원을 확인하는 것이 중요하다.

이러한 절차를 SSL 악수 과정(SSL Handshake)이라고 한다.


<실제 통신 과정>

1단계. Client Hello : 클라이언트가 브라우저나 다른 TCP 통신을 통해서 서버에게 접속한다. 

- 이때 클라이언트는 랜덤한 데이터를 생성하여 서버에게 전송한다. 

- 또 클라이언트가 SSL 통신을 하기 위해 현재 지원가능한 암호화 방식을 서버에게 전덜한다. (자신의 능력을 서버에게 말해주기)


2단계. Server Hello : Client Hello에 대한 응답으로 서버에서 Server Hello를 한다.

- 이번엔 서버에서 생성한 랜덤한 데이터를 클라이언트에게 전송한다.

- 또 이번에는 클라이언트가 지원가능한 암호화 방식에 맞춰 현재 서버에서 제공할 수 있는 가장 안전한 암호화 수단 방식을 클라이언트로 전달한다.

- 또한, 서버가 클라이언트에게 인증서를 전달한다. 


3단계. 클라이언튼 서버가 보내준 인증서가 어떤 CA에 의해서 발급된 것인지 확인하기 위해서 클라이언트에 내장되어있는 CA리스트를 확인한다.

CA리스트에 없는 인증서라면 사용자에게 경고의 메시지를 띄운다.

이때, 인증서가 어떠한 CA에 의해서 발급된 것인지 확인하기 위해서 클라이언트에 내장된 CA의 공개키를 이용하여서 복호화를 한다.

복호화를 정상적으로 성공했다면, 해당 인증서는 CA의 개인키로 암호화 한 문서임이 암시적으로 보증되었고 인증서를 통해서 서버를 믿게 된다. 


클라이언트는 1단계를 통해서 받은 서버의 랜덤 데이터와 클라이언트가 생성한 랜덤 데이터를 조합하여서 pre master secret라는 키를 생성한다.

이 키는 뒤에 살펴볼 세션 단계에서 데이터를 주고 받을 때 사용된다.

이 pre mster secret 키는 3자에게 노출되어선 절대안되는 키다.


이때, pre master secret 키를 다시 서버로 전송을 하는데, 이때 공개키 방식을 이용하여 또 전달한다.


4단계. 서버는 클라이언트가 전송한 pre master secret 값을 자신의 비공개키로 복호화를 한다.

이로서 서버와 클라이언트 모두 pre mater secret 값을 공유하게 되었고, 서버와 클라이언트는 일련의 과정을 거쳐 pre matser secret 값을 master secret 값으로 만든다. 

master secret은 session key를 생성하는데, 이 session key를 이용하여서 대칭키 방식으로 암호화하여 주고 받는다. 



참고 문서


저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License

크론탭 사용법


등록된 크론탭 리스트 확인하기

crontab -l


크론탭 수정하기

crontab -e




1. 크론탭 기본 형식 예제

ex) 10 0 * * * find /data/ -type f -mtime +7 -exec rm -rf {} \; >> /dev/null


2. 크론탭 시간 설정 방법

* * * * * 수행할 명령어 ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일) │ │ │ └───────── 월 (1 - 12) │ │ └───────── 일 (1 - 31) │ └───────── 시 (0 - 23) └───────── 분 (0 - 59)

참고 문서

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%B0%98%EB%B3%B5_%EC%98%88%EC%95%BD%EC%9E%91%EC%97%85_cron,_crond,_crontab


저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License

[Linux] yum 명령어 정리


- telnet 설치

yum -y install telnet


- 설치된 패키지 확인

yum list installed


- 패키지 검색

yum info 패키지명


- 패키지 업데이트

yum update 패키지명


- 패키지 삭제

yum remove 패키지명



저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License


아파치 버전 확인

$httpd -v


리눅스 서버 OS 버전 확인

grep . /etc/*-release


서버 IP 정보 확인

ifconfig


저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License


저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License

'▲ DB' 카테고리의 다른 글

[Berkeley DB] 버클리DB  (0) 2017.07.05
[Mysql] 한글 인코딩 설정  (0) 2017.05.31
[Mysql] mysql 콘솔로 접속하는 방법  (0) 2017.05.31
[Oracle] 오라클 DB 계정 생성 및 사용자 확인  (0) 2017.01.31
[Mysql] Mysql 버전 확인  (0) 2017.01.31

1. my.cnf 파일 찾기

vi /etc/my.cnf


2. utf8 옵션 추가하고 저장

[client] .. #하단추가 default-character-set = utf8 [mysqld] .. #하단추가 init_connect="SET collation_connection = utf8_general_ci" init_connect="SET NAMES utf8" default-character-set = utf8 character-set-server = utf8 collation-server = utf8_general_ci [mysqldump] .. #하단추가 default-character-set = utf8 [mysql] .. #하단추가 default-character-set = utf8


3. mysql 재시작

service mysqld stop

service mysqld start

혹은

service mysqld restart



mysql 서버 실행할 때 Starting MySQL.Manager of pid-file quit without updating 오류

  • my.cnf 파일에 설정이 잘못되었을 경우, 이러한 오류를 만날 수 있음. my.cnf 파일 재확인할 것


저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License

'▲ DB' 카테고리의 다른 글

[Berkeley DB] 버클리DB  (0) 2017.07.05
[Mysql] 한글 인코딩 설정  (0) 2017.05.31
[Mysql] mysql 콘솔로 접속하는 방법  (0) 2017.05.31
[Oracle] 오라클 DB 계정 생성 및 사용자 확인  (0) 2017.01.31
[Mysql] Mysql 버전 확인  (0) 2017.01.31



한글 인코딩에 대하여 (utf-8과 euc-kr)



저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License
1. 파일 이동
mv 현재파일경로 이동할경로

ex) mv test.java /home/tmp


2. 폴더 디렉토리 이동

mv /folderName /home/tmp/forderName


ex) mv /test_folder /home/tmp/test_folder


3. 파일 이름변경

mv test.java /home/tmp/name.java


저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License
1. mysql 설치 경로 찾기

2. 명령어 입력
mysql -u 사용자명 -p 데이터베이스명
mysql -u root
mysql -u root -p(루트비번)

만약, root 비밀번호를 잃어버렸을 경우에는 http://aileen93.tistory.com/27 참고



저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License

'▲ DB' 카테고리의 다른 글

[Berkeley DB] 버클리DB  (0) 2017.07.05
[Mysql] 한글 인코딩 설정  (0) 2017.05.31
[Mysql] mysql 콘솔로 접속하는 방법  (0) 2017.05.31
[Oracle] 오라클 DB 계정 생성 및 사용자 확인  (0) 2017.01.31
[Mysql] Mysql 버전 확인  (0) 2017.01.31

0. Shell 스크립트 정의

#!/bin/bash


1. 변수 사용법

변수명 = 값

  • 숫자형 변수와 문자형 변수 구별 없음 
    ex) a =10, a = "안녕"
  • 변수의 내용을 사용할 때는 변수명 앞에 $를 붙임
    $변수명 = 값
  • 변수 지정시 = 앞뒤로 공백이 들어가선 안됨
  • export 변수명 = 값을 통해서 글로벌 변수로 사용 가능

2. 연산자

사칙연산 동일하게 사용가능


3. 관계 연산자

-a : and

-o : or


if [ (조건식) -o (조건식)]

then ...


4. 조건문 (if, case)

if [조건문]

then


elif [ 조건문 ]

then


else


fi 


case 단어 in

패턴1) 

내용

끝문장;;

패턴2) 

내용

끝문장;;

.................

esac


5. 반복문 (for, while, until)

for 변수 in 변수값1 변수값2 변수값3...

do

내용

done


while [조건문]

do

내용

done


until [조건문]

do

내용

done


6. 파라미터

echo "\S0"


7. 사용자값 입력 받기

read -p "값을 입력하세요" val

  • read의 옵션
    -p : 안내문
        ex) read -p "질문 내용"
    -t : 시간초
        ex) read -t 시간초
    -n : 입력수 제한
        ex) read -n 숫자
    -s : 입력값을 화면에 표시하지 않음 
        ex) read -s

8. EOF (http://originalchoi.tistory.com/7)

<< EOF

......

EOF

  • EOF가 나올 때 까지의 명령어를 실행중인 프로그램에 입력해 줄 수 있음
  • 입력의 끝을 나타내는 EOF는 반드시 앞에 공백이나 tab이 없어야 함

9. PATH 환경설정 (http://openwiki.kr/tech/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%89%98_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8)

Shell 에서 ls 라는 명령어를 사용할 때, 어떻게 Shell이 ls 실행 파일 자체를 찾을 수 있을까?

(ls는 대부분의 시스템에서 /bin 디렉토리 밑에 존재하고 있다.)

Shell은 환경변수 PATH를 사용하여 사용자가 입력하는 명령어들의 실행 파일 위치를 찾는다.


예를 들면 당신의 PATH는 /bin:/usr/bin:/usr/local/bin:. 이렇게 설정되어 있을 것이다. 

각 디렉토리는 : 로 구별된다.

사용자가 ls 명령어를 입력할 때, Shell은 먼저 /bin/ls를 찾고, 그리고 /usr/bin/ls 를 찾아가며 마지막으로 현재 디렉토리를 찾는다.


PATH=/sbin:/usr/sbin:$PATH:새로 추가 할 PATH

export PATH


10. Shell의 변수들

 변수명

내용 

비고 

 $0

script를 실행시킬 때 프로그램의 이름이 포함된 첫 번째 문자열 저장 

 

 $1,…,$N

매개변수=파라미터

 

 $*

 스크립트에 전달된 인자들을 모아놓은 문자열로 하나의 변수에 저장됨

 

 $@

 자체로는 $*와 비슷하나, $@은 $1,…,$N와 같다.

 

 $#

위치 매개변수의 갯수가 저장 

 


저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License

+ Recent posts

티스토리 툴바