카테고리 보관물: info

HTTPS SSL 인증서 상호 변환하기 apache(.crt ) ↔ IIS(.pfx) ↔ Tomcat(jks)

1. PKCS(.pfx)

– 윈도우 IIS 에서 사용되는 키와 인증서가 포함된 파일

2. apache 용 인증서

– .crt : 텍스트 형식의 인증서 파일

– .key : 텍스트 형식의 키파일

3. pfx -> crt

root]~]# openssl pkcs12 -in filename.pfx -nocerts -out filename.key # 키파일 추출
root]~]# openssl pkcs12 -in filename.pfx -nokeys -clcerts -out filename.crt # 인증서파일 추출
root]~]# openssl pkcs12 -in filename.pfx -nodes -nokeys -cacerts -passin pass:비밀번호 -out chain.crt # 체인인증서 추출

4. crt -> pfx

root]~]# openssl pkcs12 -inkey aaa.key -in qtrustssl.crt -certfile ChainCA.crt -export -out qtrustssl.pfx -name “qtrustssl”

5. pfx -> jks

keytool -importkeystore -srckeystore qtrustssl.pfx -srcstoretype pkcs12 -destkeystore qtrustssl.jks -deststoretype jks -alias “qtrustssl”

6. jks 정보 확인방법

keytool -list -keystore cert.jks -rfc
keytool -list -keystore cert.jks -v

APM연동_PHP설치(Windows 10)

http://windows.php.net/download/

에 들어가 Thread safe방식 zip파일 가장 최근 버전을 다운로드 받습니다.

압축을 풀고 폴더이름을 PHP7으로 변경한 후에 PHP7폴더를 C드라이브에 옮겨줍니다.

PHP7의 폴더 속 php.ini-production파일을 php.ini로 변경합니다. (-production)을 지워줍니다.

php.ini을 메모장으로 열고 extension_dir을 아래와 같이 수정해줍니다.

extension_dir = “c:/PHP7/ext”

설정이 끝나면 C:\Apache24\conf로 들어가 httpd.conf파일을 메모장으로 열어줍니다.

아래 내용을 그림처럼 집어넣습니다.

LoadModule php7_module “c:/PHP7/php7apache2_4.dll”
AddType application/x-httpd-php .php .html
AddHandler application/x-httpd-php .php .html
PHPIniDir “c:/PHP7”

cmd를 열고, httpd.exe -k restart를 입력해준후 엔터를 누릅니다.

만약 Cannot load어쩌구 into server 오류가 뜬다면

http://www.microsoft.com/ko-KR/download/details.aspx?id=30679

에 들어가 파일을 다운받고 설치한 후에 다시 시도해봅니다.

그래도 안되면 PHP7 폴더속 php7apache2_4.dll과 php7ts.dll을 C:\Windows\System32 에 복사해 넣고 다시 시도해봅니다.

그래도안되면 php7ts.dll을 C:\Apache24\bin에 복사해 넣고 다시 시도해봅니다.

만약 그래도 안된다면 Apache를 64비트가 아닌 32비트로 다시 다운로드해서 설치해보시기 바랍니다.

저는 이것저것 시도하다가 마지막에 Apache를 32비트로 다시 설치하고 성공했습니다.

이래도안되는분들은 댓글로 문의 남겨주시기 바랍니다.

어쨋든 이리저리해서 성공적으로 설치가 되신분들은 C:\Apache24\htdocs로 들어가 phpinfo라는 이름의 메모장을 새로만들고 <?php phpinfo(); ?>를 적고 저장하신후에 확장자를 txt에서 php로 바꾸어줍니다.

그후에

http://127.0.0.1/phpinfo.php/

로 접속합니다.

만약 위와같은 화면이 뜬다면 php설치에 성공한겁니다.

다음시간에는 mysql의 설치와 한글화를 해보도록 하겠습니다.

윈도우에서 Apache와 PHP 연동

1. PHP 내려받기

링크: https://secure.php.net/downloads.php

2017/03/12 기준 5.6.30버전과 7.1.2버전이 있는데 7.x가 실행시간 더 빠르대요.

Current Stable PHP 7.x에 있는 Windows downloads를 클릭합니다!

이 중 Thread Safe라고 되어있는 것 중 시스템 종류(32/64bit)에 맞는 Zip 파일을 다운로드 합니다.

다운로드 받은 파일은 원하는 경로에 압축을 풀어 놓고 나중에 경로 적기 쉽게 PHP로 폴더이름을 바꿔줍시다. 저는 “E:/Program Files/”에 압축 풀었습니다.

2. php.ini 수정하기

php.ini을 수정하면 curl, mysql 등 다양한 확장기능을 사용할 수 있습니다.

PHP 폴더 안에서 “php.ini-development”를 찾아서 “php.ini”으로 이름을 바꾸고 메모장으로 실행합니다.

먼저 확장파일이 들어있는 ext 폴더 경로를 알려줘야 합니다.

;extension_dir = “./”를 검색해서 주석처리(;)를 지우고 ./로 된 부분을 (PHP 경로)\ext로 바꿔줍니다.

예) extension_dir = “E:\Program Files\PHP\ext”

그다음 다음 항목들을 검색해서 앞에 주석처리(;)된 부분만 지워줍니다.

;extension=msql.dll -> extension=msql.dll

;extension=php_curl.dll -> extension=php_curl.dll

;extension=php_mysqli.dll -> extension=php_mysqli.dll

;extension=php_pdo_mysql.dll -> extension=php_pdo_mysql.dll

만약 위에서 PHP 5.x로 받으신 분은 ;extension=php_mysql.dll도 찾아서 주석처리를 지워줍니다. php7에서는 php_mysql.dll의 기능을 php_mysqli.dll이 대체하기 때문에 없어졌다고 하네요.

Apache 내려받기 & 설정

1. Apache 내려받기

링크: https://www.apachelounge.com/download/

이것도 자신의 시스템 종류(32/64bit)에 맞춰 받아서 압축파일 안에 “Apache24” 폴더만 C:/에 압축을 풀어줍니다. 원하는 경로에 풀어도 되지만 httpd.conf 파일 수정할 때 Apache24 폴더 경로 기본값이 C:/라서 번거러운 작업 몇 가지 줄어듭니다. 저는 D:/에 압축을 풀었습니다.

2. httpd.conf 설정

이제 Apache 서버의 포트설정, php 연동을 위한 설정을 해야합니다.

Apache24/conf 폴더 안에 있는 httpd.conf 파일을 메모장으로 열어서 다음 순서대로 찾아가면서 경로를 설정합니다.

ServerRoot “c:/Apache24”

DocumentRoot “c:/Apache24/htdocs

<Directory “c:/Apache24/htdocs”>

<Directory “c:/Apache24/cgi-bin”>

ScriptAlias /cgi-bin/ “c:/Apache24/cgi-bin/”

각 항목을 메모장에서 찾아서 아래 예시와 같이 자신의 경로에 맞게 변경해줍니다. 항목 중 DocumentRoot를 위와 같이 기본값으로 주면 c:/Apache24/htdocs 안에 있는 파일을 보여줄 수 있게 됩니다. 예를 들어 c:/Apache24/htdocs 안에 hello.html이라는 파일이 있으면 나중에 주소창에 localhost/hello.html으로 연결하여 hello.html 파일을 브라우저로 열 수 있습니다. 기본값으로 두거나 원하는 폴더 경로로 변경합니다.

d:/Apache24인 경우 예시

ServerRoot “d:/Apache24”

DocumentRoot “d:/Apache24/htdocs

<Directory “d:/Apache24/htdocs”>

<Directory “d:/Apache24/cgi-bin”>

ScriptAlias /cgi-bin/ “d:/Apache24/cgi-bin/”

다음 항목들을 찾아서 변경하여 포트번호를 설정합니다. 포트번호는 기본값 80으로 되어있는데 임의의 포트로 수정하려면 아래와 같이 변경할 수 있습니다. 저는 8008로 설정해봤습니다.

Listen 8008

ServerName localhost:8008

마지막으로 PHP 연동을 위해 맨 아래에 다음을 추가해줍니다.

PHPIniDir “E:/Program Files/PHP/php.ini”

LoadModule php7_module “E:/Program Files/PHP/php7apache2_4.dll”

AddType application/x-httpd-php .php .inc .phtml

PHPIniDir 은 앞에서 수정했던 php.ini의 위치를 적습니다.

LoadModule 은 PHP폴더 내의 php7apache2_4.dll을 확인하시고 경로/파일명을 씁니다. php5로 받으신 분은 7 부분을 5로 고치고 php5apache2_4.dll을 확인하고 씁니다.

3. PHP와 연동하기

PHP 폴더의 libeay32.dll, libssh2.dll, ssleay32.dll을 복사해서 .\Apache24\bin\ 에 덮어씌워 줍니다. 아파치에서 curl_init() 같은 함수를 undefine으로 처리하는 문제를 해결해줍니다.

4. Apache 설치 및 실행

cmd를 관리자 권한으로 실행시켜 다음과 같이 적습니다.

(Apache24 경로)\bin\httpd.exe -k install

예) D:\Apache24\bin\httpd.exe -k install

성공 시 아래와 같이 나옵니다.

여기서 안되는 경우, vc15 패키지 를 다운로드&설치 후 다시 해보세요.

만약 아래와 같은 화면이 뜬다면 httpd.conf 파일에서 설정한 포트번호가 다른 서버로 사용 중인 경우입니다. 이 경우, httpd.conf에서 Listen과 ServerName의 포트번호만 변경하고 다음으로 넘어가시면 됩니다.

여기까지 성공하셨으면 이제 제어판-큰 아이콘-관리 도구-서비스 (또는 시작-서비스 검색)에서 Apache2.4를 오른쪽 클릭해서 시작을 클릭합니다. 그리고 브라우저를 실행하여 주소창에 다음과 같이 적습니다.

localhost:(위에서 설정한 포트번호)/index.html

It works!

※ 부록

localhost 를 주소창에 입력했을 때 뜨는 It works!를 없애고 싶을 때…

1. 서버 루트 폴더에서 index.html을 지운다

2. httpd.conf를 메모장으로 실행한다

3. IfModule dir_module 를 검색해서 바로 밑줄의

DirectoryIndex index.html 을 주석처리한다

[NAT] 기초 개념잡기(NAT PAT Port-Forwarding HTTP/HTTPS)

NAT를 공부하며 연결되는 PAT, Port-Forwarding, HTTP와HTTPS의 차이점까지 요점 정리하겠습니다

그림을 통해 쉽게풀어쓴 NAT의 기초 개념잡기

본 게시글은 네트워크 입문자에게 적합한 글입니다

NAT

Network Address Translation으로 말그대로 네트워크 주소변환이다
NAT는 외부 네트워크에 알려진 것과 다른 IP주소를 사용하는 내부네트워크에서 IP주소를 변환하는것이다.
  – 일단은 가볍게만 알아두시고 그림을 보면서 자세히 설명드리겠습니다.

왜 NAT(주소변환)를 해야 하나요?

1) 공인 IP의 부족한 문제를 해결
집집마다 공인IP를 사용한다면 전세계 사람들이 사용하기에 IP의 갯수는 턱없이 부족하게 됩니다.
그래서 NAT를 사용하여 1개의 공인IP에 여러개의 사설IP를 부여하여 건물한개에 여러사람이 다른 IP를 쓰지만 실제로 나갈땐 하나의 공인IP로 나가게 됩니다
– 이해안되셔도 괜찮습니다 그림을 보시면 쉽게 이해되실껍니다
2) 외부로부터 내부망을 보호하여 보안성 우수
내부에 사설망(사설IP)로 구축하여 외부 공인망으로 부터 보호를 목적
즉 사설대역 IP는 인터넷 구간에서 라우팅이 되지 않습니다.
그럼 그림을 통해 쉽게 알아보겠습니다

초보자분들 Switch의 개념이 이해안가시면 가정에서 사용하시는 공유기 생각하시면 됩니다.

지금 영업부 전체의 모든 PC들은 공인IP하나만을 할당받은 상태입니다.

지금 영업부는 192.168.0.?라는 사설망으로 묶여있습니다. 하지만 인터넷 통신을 하기위해선 반드시 공인IP를 사용해야 합니다.

여러대의 PC가 있는 사설망에서 어떻게 공인IP하나를 사용하는가?

여기서 사용되는 것이 NAT입니다.
192.168.0이라는 사설망에서 NAT변환장치를 통해 나갈땐 모두 똑같은 공인IP인 120.160.10.로 나가게 되는것입니다.
김인턴의 192.168.0.2(사설) => 120.160.10.123(공인)
최사원의 192.168.0.3(사설) => 120.160.10.123(공인)
정대리의 192.168.0.4(사설) => 120.160.10.123(공인)
이차장의 192.168.0.5(사설) => 120.160.10.123(공인)

그렇다면 올때는 누가보냈는지 어떻게 찾아오나요?

보냈으니 응답을 해야하겠죠?
공인IP로 응답을 해옵니다.
하지만..라우터에 와서 120.160.10.123 => ?
어떻게 보낸사람이 김인턴인지 최사원인지 알까요?
(보낸사람은 하나의 공인IP인데.. 그리고 응답할때도 공인IP를 목적지로 두고 보냈습니다)
정답은 PAT입니다.
먼저 PAT는 내부의 다수 IP 포트들을 공인IP의 포트로 변환을 해주는 녀석입니다.
즉. 김인턴이 통신을 하려고 할때 PAT는 잠시만 김인턴아! 포트번호는 달고가야지~ 하며 포트번호를 부여합니다. 포트번호는 그대로 기억되며 IP만 공인,사설을 지나며 변화합니다.
그리고 돌아올때는 기억하고 있던 포트번호를 통해서 사설IP정보를 찾아오게 됩니다.
(요즘 공유기들이 PAT구성을 많이하니 참고하시면 좋겠습니다)
김인턴을 예로 흐름을 적겠습니다
김인턴 네트워크정보
IP:192.168.0.2(사설)
Port: 65000(PAT를 통해 받은 통신 포트번호)
요청
192.168.0.2/65000(사설) ==> 192.168.0.2/65000(사설) > 120.160.10.123/65000(공인) 변환 ==> Internet
응답
Internet==> 120.160.10.123/65000(공인)192.168.0.2/65000(사설) 변환 ==> 192.168.0.2/65000(사설)
                                                                                 ↑
이 부분에서 어?? 사설IP가 김인턴인가? 최사원인가? 어떻게 알지??  아하~! 김인턴이 65000포트를 사용해서 요청했으니 65000포트로 응답온걸 보면 김인턴에게 보내주면 되겠구나~! 아실 수 있습니다
추가로 제가 공부하다가 PAT와 port-forwarding의 차이점떄문에 고생을 했기 때문에 포트포워딩도 적겠습니다

Port-forwarding?

먼저 https 443포트, http는 80포트로 요청이 들어옵니다.
웹서버에서 HTTPS(443)로 서버를 열고있습니다.
고객 클라이언트의 웹브라우저가 버전은 상태로 도메인을 입력하면 HTTP(80)으로 요청을 하게 되죠
서버입장에선 80으로 들어오는 포트를 443포트로 포워딩하여 보안프로토콜로 통신을 하도록 유도하는것이 port-forwarding이 되겠습니다
추가
 
댓글로 피드백 달아주신 부분입니다.
– 내부에 22번을 사용하는데 보안상 22번포트의 노출은 위험하니 2222로 노출하고자 할때 사용하는 기술로도 볼 수 있다는 피드백이 들어와 추가하겠습니다.
 
피드백 감사합니다^^

HTTPS와 HTTP의 차이점

한줄요약하자면 https가 더 안전합니다
http와 https의 차이점은 크게 없지만 핵심은 https가 모든 통신내용을 암호화하기 때문에 더 안전하게 보시면 되겠습니다

그럼 왜 https를 쓰지 http가 아직도 있나요?

간단합니다. https는 보안을 강화하기 위해서 암호화를 하는데 모든 페이지를 암호화 하게 되면 웹서버에 부하가 생기게 됩니다.
때문에 서버측에서는 비용이 많이 들기 때문에 아직까지 많지 않은 상황입니다.

그렇다고 https가 무조건 좋은것만은 아닙니다

암호화를 사용하면 그만큼 절차가 많아지기 떄문에 복잡합니다
http같은 경우 비연결형으로 웹페이지를 보다가 인터넷이 끊어져도 다시 인터넷이 연결되면 이어서 볼 수 있지만
https의 경우 소켓자체에서 인증을 하기 때문에 인터넷 연결이 끊기면 소켓도 끊겨서 다시 https 인증을 거쳐야 하기 때문에 시간이 더 걸리게 됩니다
주의!!
본 게시글은 작성자가 마음대로 이해해서 정리한 글이므로 사실과 다를 수 있음을 참고하고 봐주시
바랍니다

 

출처: https://rednooby.tistory.com/25 [개발자의 취미생활]

비즈니스 프로세스를 그리자. BPMN 2.0

소프트웨어 프로젝트 문서를 작성하면서 사용자가 어떻게 사용하고, 시스템은 어떻게 작동하는지 그림으로 나타내야 할때가 다반사이다.

사용자가 이 시점에서 무엇을 해야하고, 입력받은 시스템은 어떻게 동작해야 하는지 그림으로 그리려면 Flow Chart(1921년부터 사용, 1985년 ISO 표준 제정)와 UML을 많이 사용했을 것이다.

하지만 엔지니어링에 포커스를 둔 Flow Chart와 UML은 어딘가 모르게 3% 정도 부족할때가 생기게 마련이다.(혹시.. 나만 그런가?)

2,005년에 UML의 복잡성을 과감하게 단순화(Simplify)시킨 새로운 표준이 나왔으니 이름하여 BPMN(Business Process Modeling Notation) 1.0이다.

그리고 여러번의 판올림을 하고 나서 2011년에 BPMN 2.0이 제정되었다.

역사는 이쯤에서 하고..


왜 BPMN을 만든 것일까?

단적으로 액티비티 다이어그램이 가진 부족한 점을 보완하기 위함이다. UML은 비즈니스 프로세스보다 소프트웨어 개발 관점에서 바라본다. 그래서 비즈니스 프로세스를 표현하기에는 부족한 면이 있었다. 그래서 비즈니스 프로세스 관점에서 프로세스를 표현하는 접근방식을 취하고 있다.

BPMN의 구성

BPMN은 3가지로 구성되어 있다.

Basic

가장 기초적인 구성이다. 도형도 간단하고 기술자가 아닌 사람들도 10분 정도만 인지하고 바로 적용할 수 있을 정도로 쉽다.

Core

SW 엔지니어들이 보기 시작하는 단계이다. Basic에서 좀더 세분화된 구성이다. 시스템을 구현할때 필요로 하는 Activity에 대한 세부 분류가 표현 가능하고, 예외 처리도 표현 가능하다.

Advaned

실제 코드를 다이어그램으로 표현하는 수준이다. Core보다 더 SW 엔지니어링에 가깝도록 세분화 되어 있다. 이 수준은 BPM 시스템에 구현하면 실제로 동작하는 단계이다.

이 포스팅에서는 가장 많이 사용하는 Element를 기준으로 기술한다.

BPMN의 요소들(Elements of BPMN)

BPMN의 규칙은 아주 간단하다. 무조건 Start로 시작해서 End로 끝내야 한다. 액티비티간에 흐름이 끊어지면 안된다. 이것만 지키면 된다.

시작, 종료를 표기하자.

Flow Dimension(Start, Intermediate, End)

Intermediate는 시작과 종료 중간에 유입되는 이벤트를 나타낸다.

프로세스 액티비티(Activity)를 표기하자.

액티비티의 모양은 모서리가 둥근 사각형이다. 사각형 안에 프로세스명을 기입하면 된다.

Activity

이제는 서로를 이어줘야 할 시간! — Connections

서로를 이어줄때도 규칙과 모양이 다르다.

  • Sequence Flow

프로세스의 흐름을 나타낸다. Activity를 비롯한 Element들을 이어준다. 하지만 나중에 나올 Swimlane을 벗어나지 못한다는 제약사항이 있다. 실선에 색칠된 삼각형으로 표기한다.

Sequence Flow
  • Message Flow

Swimlane간에 전달하는 메시지를 의미한다. 메시지라함은 말(Speak), 시스템 등록같은 다른 사람이나 시스템에 지시와 요청을 전달하는 것을 포괄적으로 나타낸다. 점선에 빈 삼각형 화살표로 표기한다.

Message Flow
  • Association

액티비티와 관련된 산출물을 연결할때 사용한다. 산출물은 말(Speak), 제품, 데이터등 포괄적인 의미를 갖고 있다. 작은 점선으로 표기한다.

Association

지금까지 나온 Start, Activity와 End만으로도 많은 것을 표현할 수 있다.

Simple!!

“이럴때는 요거, 저럴때는 저거” 분기처리 — Gateway

상황에 따라서 판단해서 분기해야 하는 것은 어디서나 있기 마련이다. 분기없이 흘러가는 프로세스가 완벽하다고 생각한다. 하지만 그런게 과연 있기나 한걸까?

기호는 Flowchart와 동일하게 마름모이고, 표기법은 동일하다.

Gateway

Gateway Sample

여러 계층을 표현하자. — Pool, Swimlane, Blackbox Pool

우리가 비즈니스 프로세스를 표현할때 하나의 시스템이나 인력으로 처리하는 프로세스는 없다. 99.9%는 없다고 봐도 된다. 연동과 협업을 표현하는 방법은 Swimlane을 사용하자. 수영장에 레인을 생각하면 이해가 빠르다.

Pool, Swimlane

순서대로 살펴보면 첫번째 Vertical Swimlane은 하나의 계층만을 나타낸다. 두번째는 계층안에서 세부적으로 나눌때 레인을 여러개 두는 경우이고, 세번째 블랙박스는 나타내고자 하는 관심이 아닌 계층은 단순하게 블랙박스로 나타내는 것이다.

블랙박스를 나타내는 이유는 아키텍처의 기본인 “관심사의 분리 — Seperate of Concern”를 적용한 것이다.

위의 모든 것을 적용한 다이어그램으로 마치겠다.

마지막으로 주의할 점은 너무 세부적으로 그려야 겠다는 욕심을 버려야 한다는 것이다. 나타내고자하는 의도에 대해서 심사숙고해서 작성하자.

Business Process Modeling Notation 2.0 (BPMN)

여기에서는 BPMN 2.0 사양에서 제공하는 기본적인 업무  프로세스 모델링 요소에 대해서 살펴보기로 한다다음 컬럼에서 이들 BPMN 모델링 요소를 사용하여 어떻게 업무 프로세스를 모델링하는가에 대해 살펴보게  것이다.

Business process modeling, user, timer, task, service, none, end, message, horizontal pool, pool, exclusive gateway,

BPMN 2.0 개요

BPMN 2.0은 목적에 따라 다음과 같은 3가지 수준의 업무 프로세스 모델링을 지원한다.

 

·         서술 수준(descriptive level)

·         분석 수준(analytic level)

·         실행 수준(executable level)

 

서술 수준(descriptive level) 모델링은 업무 프로세스를 가시화 또는 시각화(visualization)하는 것을 목적으로 한다. 이것이 뭐 그리 대단하겠느냐고 생각할 지 모르겠지만 비즈니스 프로세스를 가시화한다는 것은 기본이면서도 아주 중요한 문제다사실 많은 기업이나 기관에서도 전사적인 업무  프로세스 모델을 보유하고 있는 경우는 드믈다대부분의 기업이나 기관에서 업무와 업무의 처리 흐름은 오직 담당자 또는 시스템을 개발한 개발자의 머리속에만 존재한다좀 더 나은 경우는 이것이 업무 매뉴얼에 서술되어 있는 경우이다그러나 이 또한 시간이 지나가면서 실제 업무 프로세스는 바뀌고 업무 매뉴얼과 일치하지 않는 경우가 발생하게 마련이다기업이나 기관에 표준이라고 할 수 있는 가시적으로 정의되어 있는 업무 프로세스가 없다보니 문제가 발생하거나 업무 프로세스가 변경될 때마다 사람의 기억에 의존하여 사안마다 다른 일관성 없는 해결 방안이 나올 수 밖에 없다이것이 누적되면 기업이나 기관의 업무 처리 방법은 복잡하며 일관성을 유지할 수 없게 되며이런 상황에서 합리적인 문제 해결 결론에 도달하기는 어렵게 된다따라서 기업이나 기관에 소속되어 있는 모든 사람들이 확실하게 이해할 수 있는 표준 업무 프로세스를 정의하고 이것을 유지 관리하는 일은 매우 중요한 일이 된다.

다음 단계의 분석 수준(analytic level) 모델링은 업무 효율성 제고를 위해 업무 프로세스를 모델링하는 것을 목적으로 한다. 이 수준에서의 업무 프로세스 모델링은 현행 프로세스(as-is process)를 정의하고현행 프로세스를 분석하여 개선할 수 있는 부분을 찾아 여러 개의 후보 프로세스(candidate process)를 모델링한 후에 이들 프로세스를 ABC(Activity Based Cost) 기반으로 시뮬레이션(simulation)을 수행하여 이들 중 최적의 프로세스를 찾아 최종 프로세스(to-be process)로 정의하는 일련의 과정들로 구성된다이 수준의 업무 프로세스 모델링은 현행 업무 프로세스를 개선하고자 할 때 필요하다.

마지막으로 실행 수준(executable level) 모델링은 BPM(Business Process Management) 기반으로 업무 프로세스를 실행하는 것을 목적으로 한다. 정의된 업무 프로세스 모델은 그대로  BPMS(Business Process Management Suite)가 제공하는 프로세스 실행 엔진(process execution engine)에 의하여 실행된다. BPMN 1.x까지 BPMN 모델은 BPEL(Business Process Execution Language)로 변환되어 BPEL 엔진에 의해 실행되었지만 BPMN 2.0부터는 에러가 많은 BPEL로의 변환 과정을 거지치 않아도 직접 프로세스 실행 엔진에 의해 BPMN 모델을 실행할 수 있게 되었다.

서술 수준 또는 분석 수준에서 프로세스 모델링을 수행하는 것도 의미있는 일이지만특히 실행 수준에서 프로세스를 모델링하고 그 프로세스 모델을 BPMS 상에서 실행하는 일은 매우 중요한 의미를 갖는다업무적으로는 업무 환경의 변화에 대하여 업무 담당자 스스로 민첩한 대응 능력을 갖게 된다는 것을 의미하며기술적으로는 프로세스 중심적인 시스템 구축으로 애플리케이션으로부터 프로세스와 업무 규칙을 분리함으로써 시스템의 변화 요구에 대하여 민첩한 대응 능력을 갖게 된다는 것이다. BPM 기반의 이점에 대해서는 다음에 상세히 설명하도록 한다.

각 프로세스 모델링 수준에 따라 업무 분석가나 프로세스 개발자가 사용하는 세부적인 BPMN 2.0 모델링 요소도 달라질 수 있다.  예를 들어 서술  수준에서는 업무 분석가가 업무 프로세스의 전반적인 흐름을 표현하는데 적당한 비교적 간단한 모델링 요소만을 사용하여 모델링할 수 있다그러나 분석 수준에서 업무 프로세스를 분석하고 시뮬레이션하기 위해서는 복잡한 모델링 요소들을 잘 활용하여 정확하게 업무 프로세스를 모델링해야 할 필요가 있다마찬가지로 실행 수준에서도 BPMS가 지원하고 추가로 제공하는 기능을 잘 활용하여 업무 프로세스를 상세하게 설계해야 한다.

여기에서는 업무 분석가가 서술 수준에서 업무 프로세스를 모델링하는데 필요한 BPMN 2.0 표기법에 대해서만 살펴보기로 한다.

 

BPMN 2.0 모델링 요소는 다음과 같이 분류된다.

 

·         플로우(flow)

·         참가자(participant)

·         데이터(data)

·         커넥터(connector)

·         아티팩트(artifact)

플로우(flow)

플로우는 업무 프로세스의 행위를 정의한다. BPMN 다음과 같은 3종류의 플로우 객체를 정의한다.

 

·         이벤트(event) : ‘어떤 일이 발생했다는 신호(signal)

·         활동(activity) : 프로세스에서 수행된 작업(work)

·         게이트웨이(gateway) : 라우팅 로직(routing logic)

이벤트(event)

이벤트는 프로세스 실행 과정에서 발생하여 정상적인 흐름에 영향을 주는 것을 말한다업무 프로세스는 항상 이벤트로 시작하여 이벤트로 끝난다시작 이벤트(start event)가 발생할 때 프로세스 실행이 시작되고,  프로세스 흐름이 끝나면 끝 이벤트(end event)가 발생한다시작 이벤트는 이벤트를 받지만 끝 이벤트는 이벤트를 발생시킨다다시말해 시작 이벤트는 이벤트 리스너(event listener)로서 이벤트 정보를 처리하여 특정한 행위를 계속 수행한다그러나 끝 이벤트는 이벤트 전송자(event transmitter)로서 이벤트 정보를 생성하여 전송한다

 

시작 이벤트는 다음과 같이 선이 가는 원형으로 표현된다.

 

 

[그림.1 시작 이벤트]

 

위의 표기법은 일반적인 시작 이벤트(non start event)를 표현한다이것은 시작 이벤트로서 이벤트가 어떻게 발생하는지를 명시하지 않는다어떤 방식으로 이벤트를 발생시키는 지를 명시하고 싶다면 원 안에 내부 심볼을 표현한다만약 메시지를 받을 때 시작 이벤트가 발생하는 메시지 시작 이벤트(message start event)는 다음과 같은 내부 심볼을 갖는다.

 

 

[그림.2 메시지 시작 이벤트]

 

특정 시간에 시작 이벤트를 발생시키는 타이머 시작 이벤트(timer start event)는 다음과 같은 내부 심볼을 갖는다.

 


[그림.3 타이머 시작 이벤트]

 

프로세스 흐름이 끝날 때 발생되는 끝 이벤트는 다음과 같이 선이 굵은 원형으로 표현된다.

 

 

[그림.4 끝 이벤트]

 

시작 이벤트와 마찬가지로 위 표기법은 일반적인 끝 이벤트(non end event)를 표현한다프로세스 흐름이 끝날 때 어떤 종류의 끝 이벤트가 발생시키는 지를 명시하지 않는다만약 프로세스 흐름이 끝날 때 메시지 이벤트를 발생시킨다면 메시지 끝 이벤트(message end event)를 사용한다메시지 끝 이벤트는 다음과 같은 내부 심볼을 갖는다.

 

 

[그림.5 메시지 끝 이벤트]

 

만약 실행되고 있는 모든 프로세스 흐름을 즉시 종료시키고 싶다면 다음과 같은 내부 심볼로 표현되는 종료 끝 이벤트(terminate end event)를 사용한다.

 

[그림.6 종료 끝 이벤트]

 

활동(activity)

활동(activity)이란 업무 프로세스 안에서 실행되는 작업을 나타내는 일반적인 용어로서 다음과 같은 3가지 유형의 활동이 있다.

 

·         작업(task)

·         서브 프로세스(sub process)

·         활동 호출(call activity)

 

작업(task)이란 완전히 수행되거나 아니면 전혀 수행되지 않는 원소적(atomic) 단위 활동을 말한다따라서 작업은 한 번에 한 장소에서 수행될 수 있는 일이어야 한다작업은 다음과 같이 모서리가 둥근 직사각형의 형태의 표기법을 갖는다내부에는 수행되는 작업을 표시하는 텍스트가 표시된다.

 

[그림.7 작업]

 

위의 표기법은 추상적인 작업(abstract task)을 표현한다추상적인 작업은 프로세스 실행에는 영향을 주지 않고 프로세스를 명확하게 이해하기 위해서 사용한다구체적인 작업의 내부 행위를 명시하고 싶다면 작업의 유형을 지정해야 한다만약 화면에서 정보를 입력하는 것과 같이 사용자가 수행하는 작업을 명시하고 싶다면 사용자 작업(user task)를 사용한다사용자 작업은 다음과 같은 내부 심볼을 갖는다.

 

[그림.8 사용자 작업]

 

또한 웹 서비스(web services)나 소프트웨어 솔루션과 같은 외부 서비스(external service)를 실행하는 작업을 수행한다면 서비스 작업(service task)를 사용한다서비스 작업은 다음과 같은 내부 심볼을 갖는다.

 

[그림.9 서비스 작업]

 

서브 프로세스(sub process)란 프로세스 안에서 내부의 세부 실행 흐름을 포함하는 활동으로서브 프로세스는 다음과 같은 유형을 갖는다.

 

·         포함(embedded)

·         재사용(reusable)

·         트랜잭션(transaction)

·         이벤트(event)

·         특별(ad-hoc)

 

여기에서는 이들 유형의 서브 프로세스 중에서 포함과 재사용 서브 프로세스에 대해서만 다루기로 한다.

 

포함 서브 프로세스(embedded sub process)  부모 프로세스(parent process) 내부에 포함되는 서브 프로세스를 말한다포함 서브 프로세스는 작업과 마찬가지로 모서리가 둥근 사각형으로 표현되며 펼쳐진 형태로 표현될 수 있고축소된 형태로 표현될 수도 있다펼쳐진 형태로 표현될 때는 – 내부 심볼과 함께 다음과 같이 표현된다.

 

 

 [그림 10.펼쳐진 서브 프로세스]

 

펼쳐진 형태로 포함 서브 프로세스가 부모 서브 프로세스 내부에 직접 표현된다면 세부 프로세스 흐름을 이해하기는 좋지만 아무래도 전체 프로세스 다이어그램을 복잡하게 만든다이 경우에는 다음과 같이 축소된 형태로 표현하여 다이어그램을 단순하게 만들 수 있다축소된 서브 프로세스에는 + 내부 심볼이 표현된다.

 

 

[그림 11.축소된 서브 프로세스]

 

재사용 서브 프로세스(reusable sub process)는 다른 여러 부모 프로세스에서 재사용할 수 있도록 정의된 프로세스를 말한다포함 서브 프로세스는 하나의 부모 프로세스 내부에 직접 포함되지만재사용 서브 프로세스는 부모 프로세스와는 별도의 다이어그램에 표현된다또한 포함 서브 프로세스가 단 하나의 부모 프로세스에만  종속되어 포함되지만재사용 서브 프로세스는 여러 부모 프로세스에서 재사용될 수 있다그러니까 재사용 서브 프로세스는 여러 부모 프로세스에 공통적인 활동의 흐름을 표현하는데 적당하다서브 프로세스는 다음과 같이 별도의 다이어그램으로 표현된다.

 

[그림 12.서브 프로세스]

 

부모 프로세스 다이어그램에서 이와 같은 재사용 서브 프로세스를 호출하여야 할 때는 활동 호출(call activity)를 사용한다재사용 서브 프로세스를 호출하는 활동 호출은 작업과는 달리 굵은 선으로 표현되며 축소된 서브 프로세스와 같이 + 내부 심볼을 갖는다.

 

[그림 13.활동 호출]

 

게이트웨이(gateway)

프로세스는 다양한 대체 흐름이나 동시 흐름을 포함할  있다게이트웨이(gateway) 이러한 프로세스 흐름을 분할하고 분할된 흐름을 다시 병합하는 일을 통제한다.  게이트웨이는 다음과 같이 마름모 꼴로 표현된다.

 

[그림 14.게이트웨이]

 

게이트웨이의 가장 일반적인 유형이 배타적(XOR) 게이트웨이이다배타적 게이트웨이는 조건에 따라 프로세스 흐름을 배타적으로 분할하고배타적으로 분할된 프로세스 흐름을 병합한다배타적 분할은 마치 프로그래밍 언어에서 if 문이나 switch 문을 사용하는 것과 같다조건에 따라 어느 하나의 흐름으로 분할되는 것이다배타적 병합은 배타적 분할로 분할된 프로세스 흐름을 병합하는 역할을 한다그림 14 게이트웨이는 배타적 게이트웨이를 표현한다배타적 게이트웨이는 기본적인 게이트웨이트인 셈이다배타적 게이트웨이는 다음과 같이 구체적인 내부 심볼을 가질  있다.

 

[그림 15.배타적 게이트웨이]

 

분할된 모든 프로세스 흐름이 동시에 흘러간다면 병렬 게이트웨이(parallel gateway) 사용한다배타적 게이트웨이가 분할된 흐름  하나만 흘러간다면병렬 게이트웨이는 분할된 모든 흐름이 동시에 흘러간다는 점에서 대조를 이룬다병렬 게이트웨이로 분할된 프로세스 흐름은 병렬 게이트웨이로 병합되어야 한다병렬 게이트웨이는 다음과 같은 내부 심볼을 갖는다.

 

[그림 16.병렬 게이트웨이]

참가자(participant)

참가자란 프로세스 안에 있는 활동을 실행하거나 실행할 책임을 갖는 업무 실체(business entity) 말한다참가자는 회사와 같은 조직(organizational unit) 수도 있고 어떤 일을 수행하는 역할(role) 수도 있다. BPMN에서 참가자는 (pool) 표현된다풀은 다음과 같이 라벨(label) 갖는 모서리가 각진 사각형으로 표현된다레이블에는 참가자의 이름이 표시된다.

 

  

[그림 17.]

 

풀은 일반적으로 위의 그림과 같이 수평으로 표시되지만 수직으로 표시될 수도 있다하나의 프로세스 다이어그램은 여러 풀을 포함할  있다만약 프로세스 다이어그램이 하나의 풀만을 포함한다면 일반적으로 풀은 표현하지 않는다.

 

비즈니스 프로세스는 하나의 조직 내의 여러 역할을 수행하는 참가자에 의해 실행될  있다이들 역할은 풀에 포함되는 레인(lane)으로 표현된다레인은  안에 포함되며 라벨을 갖는 직사격형으로 표현된다.

 

[그림 18.레인]

 

 안에 레인이 하나만 있다면 일반적으로 레인은 생략된다풀과 레인은 수영장을 생각하면 쉽게 이해할  있다하나의 수영장에는 여러 개의 풀이 있고하나의 풀에는 여러 레인이 있다그러나 수영장과는 달리 하나의 레인이 하위에 여러 레인을 포함할 수도 있다.

 

풀과 레인에는 다음과 같이 조직 또는 역할이 수행하는 프로세스의 활동 흐름이 표현된다.

 

 [그림 19.활동 흐름]

데이터(data)

데이터(data) 프로세스 흐름에서 처리되는 데이터 구조와 정보를 표현하며다음과 같은 4가지 데이터 모델 요소를 사용할  있다.

 

·         데이터 객체(data object)

·         입력 데이터(data input)

·         출력 데이터(data output)

·         데이터 저장소(data store)

 

데이터 객체(data object) 프로세스 흐름 안에서  처리되는 일반적인 데이터 항목을 표현하며 다음과 같이 표현된다.

 

[그림 20.데이터 객체]

 

프로세스 흐름을 실행하는 동안에 변경되는 데이터 객체의 상태는 다음 그림과 같이 대괄호([ ]) 안에 표시한다.

 

[그림 21.데이터 객체 상태]

 

활동을 수행하는데 필요한 데이터 객체라면 해당 데이터 객체를 입력 데이터(data input) 표현할  있다입력 데이터는 다음과 같은 내부 심볼을 갖는다.

 

[그림 22.입력 데이터]

 

활동을 수행한 결과 데이터 객체가 생성되었다면 해당 데이터 객체를 출력 데이터(data output)으로 표현할  있다출력 데이터는 다음과 같은 내부 심볼을 갖는다.

 

 

[그림 23.출력 데이터]

 

처리하는 데이터가 데이터베이스와 같은 정보 시스템에 있다면 다음과 같이 데이터 저장소(data store) 사용할  있다.

 

[그림 24.데이터 저장소]

커넥터(connector)

프로세스 모델은 프로세스 처리 흐름을 표현해야 하므로 플로우 객체들을 연결할  있는 연결 객체(connecting object) 필요하며, BPMN 2.0에서는 다음과 같은 4가지 연결 객체를 제공한다.

 

·         시퀀스 플로우(sequence flow)

·         메시지 플로우(message flow)

·         데이터 연관(data association)

·         연관(association)

 

시퀀스 플로우(sequence flow) 화살표를 사용하여 프로세스 다이어그램에서 플로우 객체의 실행 순서를 표시한다시퀀스 플로우는 다음과 같이 실선의 화살표로 표시된다.

 

[그림 25.시퀀스 플로우]

 

시퀀스 플로우는 같은 (pool) 안에 정의된 플로우 객체 사이의 실행 흐름에만 사용할  있다 사이에 또는서로 다른  안에 있는 플로우 객체 사이에는 메시지 플로우(message flow) 사용해야 한다.  메시지 플로우는 점선의   화살표로 표시된다.

 

[그림 26. 메시지 플로우]

 

메시지 플로우는 다음과 같이 풀을 연결하는데 사용할 수 있다.

 

[그림 27.풀 연결]

 

또는 다음과 같이 서로 다른 풀에 있는 플로우 객체를 연결하는데 사용된다.

 

[그림 28.풀 사이의 플로우 객체 연결]

 

메시지 플로우에 전달되는 정보를 포함하는 데이터 구조 즉메시지(message)를  추가할 수 있다상호작용의 초기에 전달되는 메시지 즉초기 메시지(initializing message)는 다음과 같이 표시된다.

 

[그림 29.초기 메시지]

 

상호작용에서 반환되는 메시지 즉비초기 메시지(non-initializing message)는 다음과 같이 표시된다.

 

[그림 30.반환(비초기메시지]

 

이들 메시지는 메시지 플로우에 부착되어 메시지 플로우를 통하여 어떤 메시지가 전달되는 지를 표시할 수 있다다음 그림은 풀을 연결하는 메시지 플로우에 메시지가 부착된 결과를 보여준다.

 


[그림 31.풀 연결  메시지 플로우에 메시지 부착]

 

다음 그림은서로 다른 풀에 있는 플로우 객체를 연결하는 메시지 플로우에 메시지가 부착된 결과를 보여준다.

 

[그림 32. 풀 사이의 플로우 객체 연결 메시지 플로우에 메시지 부착]

 

데이터 연관(data association)은 데이터 객체와 활동의 입출력 사이에 데이터를 이동시키는데 사용된다데이터 연관은 다음과 같이 점선 화살표로 표시된다.

 

[그림 33.데이터 연관]

 

다음 그림은 입력 데이터가 작업에 제공되는 것을 표현한다.

 

[그림 34.입력 데이터 연관]

 

다음 그림은 작업으로부터 출력 데이터가 생성되는 것을 표현한다.

 

[그림 35.출력 데이터 연관]

 

다음 그림은 데이터 객체가 두 작업 사이에 전달되는 것을 표현한다.

 


[그림 36.데이터 객체 연관]

 

다음 그림은 데이터 저장소를 통하여 두 작업 사이에 데이터가 이동하는 것을 표현한다.

 

[그림 37.데이터 저장소 연관]

 

연관(association)에 대해서는 아티팩트(artifact) 절에서 살펴보기로 한다.

아티팩트(artifact)

아티팩트(artifact)는 프로세스 실행에 영향을 미치지 않고 프로세스 다이어그램에만 표현하는 구문적인 정보를 말한다. BPMN 2.0은 다음 2가지 아키팩트를 제공한다.

 

·         주석(annotation)

·         그룹(group)

 

주석(annotation)은 텍스트로 표현된 설명이다주석은 다음과 같이 표현된다

 

[그림 38.주석]

 

주석은 모델 요소에 부착되며이때 주석과 모델 요소를 연결하는 커넥터를 연관(association)이라고 한다연관은 다음과 같이 점선으로 표현된다.

 

[그림 39.주석 연관]

 

그룹(group)은 일련의 모델 요소의 그룹에 어떤 특별한 의미를 부여하기 위해 사용되는 시각적인 표현이다그룹은 다음과 같은 모서리가 둥근 사각형 점선으로 표현된다.

 

[그림 40.그룹]

 

nslookup 명령어 사용법 및 예제 정리

ex 1>

C:>nslookup
Default Server: kns.kornet.net
Address: 168.126.63.1

> woobi.co.kr
Server: kns.kornet.net <- 현재 컴퓨터의 DNS서버
Address: 168.126.63.1 <- 현재 컴퓨터의 DNS서버 IP

Name: woobi.co.kr <- 해당 도메인
Address: 222.234.3.97 <- 해당 도메인 IP

ex 2>

C:>nslookup
Default Server: kns.kornet.net
Address: 168.126.63.1

> set type=all <- 해당 대상의 모든 정보를 출력하도록 설정
> woobi.co.kr
Server: kns.kornet.net
Address: 168.126.63.1

Non-authoritative answer: <- “믿을 수 없는 답변” 하지만, 한번더 실행하면 나타나지 않음. 캐쉬가 안되면 나타나는 메세지
woobi.co.kr nameserver = ns1.woobi.co.kr <- 해당 대상의 네임서버1
woobi.co.kr nameserver = ns2.woobi.co.kr <- 해당 대상의 네임서버2

woobi.co.kr nameserver = ns1.woobi.co.kr <- 해당 대상의 네임서버3
woobi.co.kr nameserver = ns2.woobi.co.kr <- 해당 대상의 네임서버4
ns1.woobi.co.kr internet address = 222.234.3.105 <- 해당 대상의 네임서버 1 IP
ns2.woobi.co.kr internet address = 222.234.3.106 <- 해당 대상의 네임서버 2 IP

> set debug //TTL 을 알고 싶을 경우

> woobi.co.kr
서버: cns3.bora.net
Address: 203.248.252.2

————
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 0, additional = 0

QUESTIONS:
woobi.co.kr, type = A, class = IN

ANSWERS:
-> woobi.co.kr
internet address = 182.162.94.60
ttl = 600 (10 mins)

————

권한 없는 응답:

————

Got answer:
HEADER:
opcode = QUERY, id = 3, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0

QUESTIONS:
woobi.co.kr, type = AAAA, class = IN
AUTHORITY RECORDS:
-> woobi.co.kr
ttl = 600 (10 mins)
primary name server = ns1.nsmycgi.com
responsible mail addr = hosting.mycgi.co.kr
serial = 2018041201
refresh = 10800 (3 hours)
retry = 3600 (1 hour)
expire = 604800 (7 days)
default TTL = 3600 (1 hour)

————
이름: woobi.co.kr
Address: 182.162.94.60

 

HTTP Response Code 정리

Response Code 에 따라서 어떤 응답을 나타내는지 정리

 Response Class Code   Response Class 의미  설명
 1  Informational (정보)  리퀘스트를 받고, 처리 중에 있음.
 2  Success (성공)  리퀘스트를 정상적으로 처리함.
 3  Redirection (리디렉션)  리퀘스트 완료를 위해 추가 동작이 필요함.
 4  Client Error (클라이언트 오류)  클라이언트 요청을 처리할 수 없어 오류 발생
 5  Server Error (서버 오류)  서버에서 처리를 하지 못하여 오류 발생

4번과 5번은 에러이기는 한데, 간단히 차이점을 설명하자면 4xx 에러는 클라이언트의 잘못된 요청으로 서버에서 처리하지 못한 것이고, 5xx 에러는 클라이언트의 요청은 문제가 없으나, 서버에서 처리중에 서버 문제로 인해 오류가 발생한 것이라고 생각하시면 됩니다.

아래는 자주 접하는 코드를 위주로 작성하였고, 더 상세한 정보는 아래 참고 자료의 위키피디아 링크를 참조해주세요.~

 

200 번대 응답(Response) : 성공(Success)

200 OK * 요청 정상 처리.
204 No Content * 요청 정상 처리하였지만, 돌려줄 리소스 없음.

* 응답에 어떠한 엔티티 바디(Entity Body)도 포함하지 않음.

* 서버에서 처리 후, 클라이언트에 정보를 보낼 필요가 없는 경우 사용.

206 Partial Content * Range가 지정된 요청인 경우, 지정된 범위만큼의 요청을 받았다는 것을 알려줌.

 

* 300 번대 응답(Response) : 리디렉션(Redirection)

301 Moved Permanently * 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후로는 새 URI를 사용해야 한다는 것을 나타냄. (영구적인 URI 변경)
302 Found * 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후로는 새 URI를 사용해야 한 다는 것을 나타냄. 301과 유사하지만, 302는 일시적인 URI 이동)
303 See Other * 이 응답은 요청에 대한 리소스는 다른 URI에 있기 때문에 GET 메서드를 사용해서 얻어야 한다는 것을 나타냄. 302 코드와 같지만, 303은 리디렉션 위치를 GET 메서드를 통해 얻어야 한다고 명확하게 되어 있음.
304 Not Modified * 요청한 리소스가 마지막 요청 이후 변경된 적이 없기 때문에 기존 클라이언트의 로컬 캐시 리소스를 사용하도록 알려줌.

300번대로 분류되어 있지만, 리디렉션과는 관계없는 처리를 함.

307 Temporary Redirect * 임시로 페이지를 리다이렉트 함.

 

* 400 번대 응답(Response) : 클라이언트 에러 (Client Error)

400 Bad Request * 클라이언트의 요청 구문이 잘못됨.

* 브라우저는 이 응답을 200 OK 응답과 동일한 형태로 취급함.

401 Unauthorized * 요청 처리를 위해 HTTP 인증(BASIC 인증, DIGEST 인증) 정보가 필요함을 알려줌.

접근 허용을 차단함. 최초 요청에는 인증 다이얼로그 표시하고, 두번째는 인증 실패 응답을 보냄.

403 Forbidden * 접근 금지 응답. Directory Listing 요청(서버 파일 디렉토리 목록 표시) 및 관리자 페이지 접근 등을 차단하는 경우의 응답. (파일 시스템 퍼미션 거부, 허가 되지 않은 IP 주소를 통한 액세스의 거부 등)

* 서버는 엔티티 바디에 접근 거부에 대한 이유를 명시하여 보낼 수 있음.

404 Not Found * 클라이언트가 요청한 리소스가 서버에 없음
405 Mothod Not Allowed * 허용되지 않는 HTTP 메서드를 사용함.

 

* 500 번대 응답(Response) : 서버 에러 (Server Error)

500 Internal Server Error * 서버에서 클라이언트 요청을 처리 중에 에러가 발생함.
503 Service Unavailable * 서버가 일시적으로 요청을 처리할 수 없음.

* 서버가 과부하 상태이거나 점검중이므로 요청을 처리할 수 없음을 알려줌.

504 Gateway Timeout * 서버를 통하는 게이트웨이에 문제가 발생하여 시간이 초과됨.
505 HTTP Version Not Supported * 해당 HTTP 버전에서는 지원되지 않는 요청임을 알려줌.

 

totoliFile Server HTTPS(SSL) 인증서 경고 없이 사용하기

**. TOTOLI 서버에 접속한 후 파일 목록의 최 하단에 위치한 rootCA 인증서를 다운로드 하세요.

1. totoli Server의 Root 인증서를 다운로드 합니다.

 

2. 다운로드 대화창(BAR)가 나타나면 [열기]를 선택합니다.

 

3. 보안 메시지 창에서 [허용]을 선택합니다.

 

4. 인증서 정보창이 열리면 [인증서 설치]버튼을 선택합니다.

 

5. 인증서 가져오기 마법사의 저장소 위치를 “로컬 컴퓨터” 로 선택 후 [다음]으로 진행 합니다.

 

6. 인증서 저장소 선택지 중 “모든 인증서를 다음 저장소에 저장”을 선택 후 [찾아보기]를 통해

인증서가 저장될 저장소 선택창을 부릅니다.

 

7. 인증서 저장소 선택창에서 “신뢰할 수 있는 루트 인증 기관” 저장소를 선택 후 [확인]을 선택합니다.

 

8. 다시 인증서 가져오기 마법사로 돌아와 [다음]으로 진행합니다.

 

9. 인증서 가져오기 마법사를 [마침]을 선택해 닫습니다.

 

10. 인증서 가저오기를 완료하였습니다. 안내 메시지 창의 [확인]을 선택합니다.

 

11. 인증서 정보창도 [확인]을 선택하여 닫습니다.

 

**. TOTOLI ROOT 인증서 설치가 완료 되었으며, 인증서를 설치한 PC 에서는 HTTPS 프로토콜로

접근시 더이상 보안 경고창이 나타나지 않게 됩니다.

 

VirtualBox 호스트 전용 어댑터 설정

VirtualBox에서 기본으로 vm을 설치하면 NAT 네트워크로 연결이 되서 그냥 ssh client로 접속하는데 꽤 불편하다.

호스트 전용 어탭터 설정을 통해 내부 고정 IP로 세팅하는 방법을 기술해본다.

Windows 기준이지만 mac도 거의 동일하다.

VirtualBox 환경설정에서 어댑터 추가

VirtualBox- 파일 – 환경설정 – 네트워크 – 호스트 전용 네트워크 메뉴에서

호스트 전용 어댑터를  버튼으로 신규 호스트 전용 어댑터를 생성한다.

편집()을 클릭하여 아래와 같이 IP 주소를 확인한다.

예제는 192.168.253.1 인 것을 볼 수 있다.

또 DHCP 기능은 사용하지 않으므로 체크되지 않는 것을 확인한다.

VM 설정에서 어댑터 추가

VM설정에서 환경설정에서 추가한 어댑터를 추가한다. VM이 종료된 상태에서 작업을 진행해야 한다.

어댑터2번에 신규로 추가한 #2번 의 호스트 전용 어댑터를 추가한다.

GUEST OS를 시작한다.

GUEST OS 네트워크 설정

ifconfig으로 현재 어댑터 정보를 확인해본다.

$ ifconfig -a
enp0s3    Link encap:Ethernet  HWaddr 08:00:27:ec:8e:1c  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:feec:8e1c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1596 (1.5 KB)  TX bytes:7105 (7.1 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:86:ed:d1  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10303 (0.0 KB)  TX bytes:0 (0.0 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:164 errors:0 dropped:0 overruns:0 frame:0
          TX packets:164 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:12080 (12.0 KB)  TX bytes:12080 (12.0 KB)

enp0s3 로 현재 nat 어댑터로 구성이 되어 있고 신규로 enp0s8 어댑터에 대해서 호스트 전용 네트워크를 설정한다.

$ sudo vi /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo  
iface lo inet loopback

# The primary network interface
auto enp0s3  
iface enp0s3 inet dhcp

# The host-only network interface 신규로 추가
auto enp0s8  
iface enp0s8 inet static  
address 192.168.253.101  
netmask 255.255.255.0  
network 192.168.253.0  

설정이 완료 됐으면 network service를 재시작한다.

$ sudo systemctl restart networking
or  
$ sudo /etc/init.d/networking restart

설정이 완료됐으면 host OS에서 ping을 날려보면

C:\Users\hkwon>ping 192.168.253.101

Ping 192.168.253.101 32바이트 데이터 사용:  
192.168.253.101의 응답: 바이트=32 시간<1ms TTL=64  
192.168.253.101의 응답: 바이트=32 시간<1ms TTL=64  
192.168.253.101의 응답: 바이트=32 시간<1ms TTL=64  
192.168.253.101의 응답: 바이트=32 시간<1ms TTL=64

192.168.253.101에 대한 Ping 통계:  
    패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
    최소 = 0ms, 최대 = 0ms, 평균 = 0ms

ssh 클라이언트로 접속 해서 이제 작업하면 된다~