728x90
300x250

[GNU - 리눅스(Linux)] 우분투 20.04(18.04), 아파치 톰캣 9, OpenJDK 15, 16, OpenSSL 사설 자가서명

 

이번에 다뤄볼 주제는 우분투 20.04(18.04), 아파치 톰캣 9, OpenJDK 15, 16, OpenSSL 사설 자가서명까지 다뤄보고자 한다.


1. 설명서

요약 형태로 "설명서"를 작성하였다.

/*
파일명: 210610_ubuntu_20_04_self_signed_tomcat_9_ssl.txt
생성일자: 2021-06-10 목요일
작성자: 도도(Dodo), Apache License v2.0
비고: 
1. Ubuntu 18.04, Ubuntu 20.04
2. OpenJDK 15, OpenJDK 16
3. Tomcat9, Tomcat 10 서비스 생성까지
4. OpenSSL 사설 인증서 생성부터 자가 인증까지

*/
1. OpenJDK 15, 16

// 1.1. JRE, JDK 설치하기
# sudo apt-get install openjdk-16-jre
# sudo apt-get install openjdk-16-jdk

// 1.2. 자바 설치 경로 찾기
# /usr/lib/jvm/
# ls -al
java-16-openjdk-amd64

.........(중략)

// 1.3. profile 수정하기
# sudo vim /etc/profile

(중략)

  unset i
fi

# OpenJDK 16
JAVA_HOME=/usr/lib/jvm/java-16-openjdk-amd64
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

:wq

// 1.4. profile 반영하기
# source /etc/profile

// 1.5 자바 버전 확인하기
# java -version
2. 아파치 톰캣 9 설치하기
// 2.1. 내려받기
https://tomcat.apache.org/download-90.cgi

# /opt/
# wget https://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.46/bin/apache-tomcat-9.0.46.tar.gz
# tar xvfz apache-tomcat-9.0.46.tar.gz
# mv apache-tomcat* tomcat9

// 2.2. 톰캣 권한 획득
# sudo chown -R tomcat: /opt/tomcat9

// 2.3. 쉘 소유권 획득
# sudo sh -c 'chmod +x /opt/tomcat9/bin/*.sh'

// 2.4. 서비스 생성하기
# sudo /etc/systemd/system/tomcat9.service

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-16-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headl>

Environment="CATALINA_BASE=/opt/tomcat9"
Environment="CATALINA_HOME=/opt/tomcat9"
Environment="CATALINA_PID=/opt/tomcat9/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat9/bin/startup.sh
ExecStop=/opt/tomcat9/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

// 2.5. 시스템 데몬 서비스 재시작
# sudo systemctl daemon-reload

// 2.6. 시스템 서비스 등록
# sudo systemctl enable --now tomcat9

// 2.7. 시스템 서비스 상태
# sudo systemctl status tomcat9

// 2.8. 시스템 서비스 3가지 기능
# sudo systemctl start tomcat9
# sudo systemctl stop tomcat9
# sudo systemctl restart tomcat9

// 2.9. 방화벽 허용
# sudo ufw allow 8080
// 3. 수정 위치 (tar.gz 설치로 진행할 것)
   이유: apt-get install tomcat9은 servlet이 잘 동작하지 않음.

# vim /opt/tomcat9/conf/server.xml 

// 3.1. 개인키 생성
# openssl genrsa -des3 -out keyname.key.origin 2048

// 3.2. 인증 요청서 (CSR) 생성
# openssl req -new -key keyname.key.origin -out csrname.csr

[비고]
callenge password, optional company name은 optional하므로 생략

// 3.3. 개인키 비밀번호 제거
# openssl rsa -in keyname.key.origin -out keyname.key

// 3.4. 인증서 생성(CRT)
# openssl x509 -req -days 3650 -in csrname.csr -signkey keyname.key -out crtname.crt

// 3.5. 톰캣에서 사용할 수 있는 키스토어 파일 생성
# openssl pkcs12 -export -in crtname.crt -inkey keyname.key -out keyname.p12 -name tomcat

[비고]
지원형식: jks, pkcs12 등 지원함.

// 3.6. 톰캣 설정 변경
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" SSLEnabled="true" maxThreads="200"
scheme="https" secure="true"
keystoreFile="p12 파일이 위치한 경로"
keystorePass="키스토어 생성시 입력한 패스워드"
keystoreType="pkcs12"
clientAuth="false"
sslProtocol="TLS" />

예:) p12 파일이 위치한 경로
/ca/localhost/localhost.p12

톰캣 디렉터리 내 conf/server.xml 파일을 수정한다.

// 3.7. 인증서 디렉터리, 파일 소유권 권한
# cd /ca/localhost
# chown -R tomcat:tomcat *

// 3.8. 서비스 재시작
# sudo systemctl restart tomcat9
# sudo service tomcat9 restart (같은 표현)
/*
Copyright 2021. 도도(Dodo), 우분투 20.04, 자가서명, 톰캣 9, SSL, OpenJDK 15, OpenJDK 16 인증서
                        (Ubuntu 20.04, self-signed, Tomcat 9, SSL, OpenJDK 15, OpenJDK 16 certificates)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

*/

2. 첨부(Attachments)

210610_ubuntu_20_04_self_signed_tomcat_9_ssl_openjdk_15_16.zip
0.01MB

[Apache License v2.0을 적용받는다.]


3. 맺음글(Conclusion)

우분투 20.04(18.04)에서 아파치 톰캣 9, OpenJDK 15, 16, OpenSSL 사설 인증서 생성까지 다뤄보았다.


4. 참고자료(References)

1. 

반응형
728x90
300x250

[PC활용] SSL - "이 웹 사이트에서의 보안인증서 문제가 있습니다"에 대한 해결(인터넷 익스플로러, 파이어폭스)

 

SSL 웹 사이트에 접속했을 때, "이 웹 사이트에서의 보안인증서 문제가 있습니다."라는 문구를 볼 수 있다.

 


1. 인증서 오류

 

인증서 오류에 관한 것이다.

 

 

그림 1-1. 인증서 오류의 창 - 도도(Dodo)

 

그림 1-1은 https:// 사이트에 접속했는데 인증서 오류의 창이 뜨는 것을 볼 수 있다.

왜 이러한 문구가 뜨는지 알게 되면 해결할 수 있는 방법이 의외로 많다.

 

 

그림 1-2. 인증서 자세히 보기 - 도도(Dodo)

 


2. 해결방법

 

신뢰할 수 있는 인증서라면, "루트 인증기관"을 등록하면 이 문제를 간단하게 해결할 수 있다.

 

[Internet Explorer]

 

 

그림 2-1. 인터넷 익스플로러에서 인증서 등록하기 - 도도(Dodo)

 

[Mozilla Firefox]

 

신뢰할 수 있는 사이트라면, "예외 추가"를 클릭하면 이 문제는 해결이 된다.

 

 

그림 2-2. 모질라 파이어폭스에서의 SSL(Https) - 도도(Dodo)

 

 

 


3. 맺음글(Conclusion)

 

웹 브라우저에 있는 기능에 대해서 소개하였다.

반응형
728x90
300x250

[네트워크(Network)] OSI Layers, DNS, SSL

 

네트워크에 대해서 몇 가지 소개하고자 한다.

 


1. 네트워크 - OSI Layers 소개


OSI Model을 소개하기에 앞서 몇 가지를 소개하고자 한다.

UDP, TCP를 잠시 소개한다.

 

참고로 Windows DNS와 ISC-Bind 9 Server에서는 데이터를 전송하는 타입은 "UDP" 방식을 사용한다.

 

번호

Port Number

(포트 번호)

타입(Type)

설명(Description)

1

53번

UDP

DNS 영역 포트 

 

 

 

 

 

 

번호

타입(Type)

설명(Description)

1

TCP

 전송 제어 프로토콜 (TCP)은 인터넷 프로토콜 제품군의 주요 프로토콜 중 하나이다.

 이것은 인터넷 프로토콜 (IP)을 보완하는 초기 네트워크 구현에서 시작되었다.

 따라서 전체 제품군을 일반적으로 TCP / IP라고합니다.
TCP는 IP 네트워크를 통해 통신하는 호스트에서 실행되는 응용  프로그램간에 8 진수 (바이트) 스트림의 안정적이고 순서가 있으며 오류가 확인 된 전달을 제공한다.
 World Wide Web, 전자 메일, 원격 관리 및 파일 전송과 같은 주요 인터넷 응용 프로그램은 TCP에 의존한다.
신뢰할 수있는 데이터 스트림 서비스가 필요하지 않은 응용 프로그램은 사용자 데이터 그램 프로토콜 (UDP)을 사용할 수 있다.
 사용자 데이터 그램 프로토콜 (UDP)은 신뢰성이 떨어지는 대기 시간을 강조하는 비 연결형 데이터 그램 서비스를
제공한다.

2

UDP

 User Datagram Protocol의 축약어로 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종이다.
 UDP는 세계 통신표준으로 개발된 OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약이다. 

 동일 계층에서 사용하는 또다른 프로토콜로 TCP가 존재한다.

 

표 1-1. OSI Model

 

 

계층명(Layers)

Protocol data unit (PDU)

프로토콜 데이터 유닛(PDU)

호스트 층

(Host Layer)

7. Application Layers

(응용 계층)

Data(데이터)

 웹(HTTP), FTP 등
예) 리소스 공유, 원격 파일 액세스를
포함한 고급 API

6. Presentation Layer

(프리젠테이션 층)

Data(데이터)

네트워킹 서비스와
응용 프로그램 간의 데이터 변환:
문자 인코딩, 데이터 압축 및 암호화 / 해독
 

예)

1. Apple Filing Protocol (AFP)
2. ICA (Independent Computing Architecture), Citrix 시스템 핵심 프로토콜
3. LPP (Lightweight Presentation Protocol)
4. NetWare 핵심 프로토콜 (NCP)
5. NDR (네트워크 데이터 표현)
6. Telnet (원격 터미널 액세스 프로토콜)
7. Tox, Tox 프로토콜은 프레젠테이션 및 응용 프로그램 계층의 일부로 간주되는 경우가 있음.
8. 외부 데이터 표현 (XDR)
9. X.25 패킷 어셈블러 / 디스어셈블러 프로토콜 (PAD)

5. Data Layer (데이터 층)

Data(데이터)

 통신 세션 관리, 즉 두 노드 간의
다중 앞뒤 전송 형태의 지속적인 정보 교환

 

예)

1. ADSP, AppleTalk 데이터 스트림 프로토콜
2. ASP, AppleTalk 세션 프로토콜
3. H.245, 멀티미디어 통신을위한 호 제어 프로토콜
4. ISO-SP, OSI 세션 계층 프로토콜 (X.225, ISO 8327)
5. iSNS, 인터넷 저장 장치 이름 서비스
6. L2F, 레이어 2 포워딩 프로토콜
7. L2TP, 레이어 2 터널링 프로토콜
8. NetBIOS, 네트워크 기본 입력 출력 시스템
9. PAP, 비밀번호 인증 프로토콜
10. PPTP, 지점 간 터널링 프로토콜
11. RPC, 원격 프로 시저 호출 프로토콜
12. RTCP, 실시간 전송 제어 프로토콜
13. SMPP, 짧은 메시지 피어 - 투 - 피어
14. SCP, 세션 제어 프로토콜
15. SOCKS, SOCKS 인터넷 프로토콜, 인터넷 소켓 참조
16. ZIP, 존 정보 프로토콜
17. SDP, 소켓 직접 프로토콜

4. Transport Layer (전송 층)

 Segment(세그먼트),

Diagram(다이어그램)

 세그먼테이션, 확인 및 멀티플렉싱을
포함한 네트워크상의 지점 간
데이터 세그먼트의 안정적인 전송

예)

1. ATP, AppleTalk 트랜잭션 프로토콜
2. CUDP, 순환 UDP
3. DCCP, 데이터 그램 혼잡 제어 프로토콜
4. FCP, 파이버 채널 프로토콜
5. IL, IL 프로토콜
6. MPTCP, 다중 경로 TCP
7. RDP, 신뢰할 수있는 데이터 프로토콜
8. RUDP, 신뢰할 수있는 사용자 데이터 그램 프로토콜
9. SCTP, 스트림 제어 전송 프로토콜
10. SPX, 순차 패킷 교환
11. SST, 구조화 된 스트림 전송
12. TCP, 전송 제어 프로토콜
13. UDP, 사용자 데이터 그램 프로토콜
14. UDP-Lite
15. μTP, 마이크로 전송 프로토콜

미디어 층

(Media Layer)

3. Network Layer (네트워크 층)

 Packet(패킷)

 주소 지정, 라우팅 및 트래픽 제어를 포함한
다중 노드 네트워크의 구조화 및 관리

예)

1. CLNP, Connectionless 모드 네트워크 서비스
2. DDP, 데이터 그램 전달 프로토콜
3. EGP, 외부 게이트웨이 프로토콜
4. EIGRP, 향상된 내부 게이트웨이 라우팅 프로토콜
5. ICMP, 인터넷 제어 메시지 프로토콜
6. IGMP, 인터넷 그룹 관리 프로토콜
7. IPsec, 인터넷 프로토콜 보안
8. IPv4 / IPv6, 인터넷 프로토콜
9. IPX, 인터 네트워크 패킷 교환
10. OSPF, 최단 경로 우선 개방
11. PIM, 프로토콜 독립 멀티 캐스트
12. RIP, 라우팅 정보 프로토콜

2. Data Link (데이터 링크)

Frame(프레임)

물리 계층에 의해 연결된 두 노드 사이의 데이터 프레임의 신뢰성있는 전송

예)

1. 네트워크 계층 데이터 패킷을 프레임으로 캡슐화
2. 프레임 동기화
3. 논리적 링크 제어부(LLC) 계층 : 일부 전송 계층 프로토콜에 의해 제공되는 ARQ 외에도 오류 제어 (Automatic Repeat Request, ARQ), 물리층에 제공된 FEC (오류 수정) 기술 및 오류 탐지 및 패킷 제거는 네트워크 계층을 포함하여 모든 계층에서 제공.

 

4. 데이터 링크 계층 오류 제어 (즉, 오류 패킷의 재전송)는 무선 네트워크 및 V.42 전화 네트워크 모뎀에는 제공되지만 이더넷과 같은 LAN 프로토콜에는 제공되지 않는다.

비트 오류는 짧은 전선에서 드문 경우이기 때문이다.

이 경우, 오류 검출 및 오류 패킷의 제거 만이 제공된다. 흐름 제어, 전송 계층에 제공되는 것 외에 데이터 링크 계층 흐름 제어는 이더넷과 같은 LAN 프로토콜에서는 사용되지 않지만 모뎀과 무선 네트워크에서는 사용된다.

5. MAC (Media Access Control)제어부 계층 :

이더넷 네트워크 및 허브 네트워크에서 충돌 감지 및 재전송을 위한 CSMA / CD 프로토콜 또는
무선 네트워크에서의 충돌 회피를 위한 CSMA / CA 프로토콜과 같이 채널 액세스 제어를위한 다중 액세스 프로토콜
.

6. 물리적 주소 지정 (MAC 주소 지정)
MAC 필터링, STP (Spanning Tree Protocol) 및 SPB (Shortest Path Bridging)를 포함한 LAN 스위칭 (패킷 스위칭)
7. 데이터 패킷 큐 또는 스케줄링
8. 저장 후 전달 전환 또는 컷 쓰루 전환
9. 서비스 품질 (QoS) 제어
10. 가상 LAN (VLAN)

 1. Physical Layers (물리 계층)

 Symbol(부호, 기호)

물리적인 매체를 통한 로우 비트 스트림의
송수신

예)

1. 1-Wire

2. ARINC 818 항공 전자 공학 디지털 비디오 버스
3. 블루투스 물리적 레이어
4. CAN 버스 (컨트롤러 영역 네트워크) 물리 계층
5. DSL
6. EIA RS-232, EIA-422, EIA-423, RS-449, RS-485
7. Etherloop
8 .10BASE-T, 10BASE2, 10BASE5, 100BASE-TX,

100BASE-FX, 100BASE-T, 1000BASE-T, 1000BASE-SX 및 기타 품종을 포함한 이더넷 물리적 계층
9. GSM Um 무선 인터페이스 물리 계층
10. G.hn/G.9960 물리 계층
11. I²C, I²S
12. IEEE 1394 인터페이스
13. ISDN
14. IRDA 물리층
15. ITU 권고안 : ITU-T 참조
16. 모바일 산업 프로세서 인터페이스 물리 계층
17. 변조 초음파
18. 광 전송망 (OTN)
19. SPI
20. SMB
21. SONET / SDH
22. T1 및 기타 T- 캐리어 링크, E1 및 기타 E- 캐리어 링크
23. TransferJet 물리 계층
24. USB 물리 계층
25. 전화 네트워크 모뎀 - V.92
26. 802.11 Wi-Fi 물리 계층의 종류
27. X10

 

 


2. DNS 서버란

 

도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해준다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유된다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.

 

 

그림 2-1. DNS 시스템 구조(사용자 관점)

 



3. SSL(구 TLS)

 

전송 계층 보안 (영어: Transport Layer Security, TLS, 과거 명칭: 보안 소켓 레이어/Secure Sockets Layer, SSL)는 암호 규약이다.
그리고 '트랜스포트 레이어 보안'이라는 이름은 '보안 소켓 레이어'가 표준화 되면서 바뀐 이름이다. 이 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단간 보안과 데이터 무결성을 확보해준다.
이 규약은 웹 브라우징, 전자 메일, 인스턴트 메신저, voice-over-IP (VoIP) 같은 응용 부분에 적용되고 있다.

국제 인터넷 표준화 기구(IETF)에 의해 현재 구식(deprecate)으로 간주되어 있다.
최종 갱신은 RFC 5246이고, 최종 갱신 버전은 넷스케이프에서 만든 SSL 표준을 바탕으로 했다.

 


4. 참고자료(Reference)

 

1. UDP - 나무위키, https://namu.wiki/w/UDP, 접속일자 2018-07-28

2. OSI model, Wikipedia, https://en.wikipedia.org/wiki/OSI_model, 접속일자 2018-07-28

3. Data link layer, Wikipedia, https://en.wikipedia.org/wiki/Data_link_layer, 접속일자 2018-07-28

4. Physical layer, Wikipedia, https://en.wikipedia.org/wiki/Physical_layer, 접속일자 2018-07-28

5. Network layer, Wikipedia, https://en.wikipedia.org/wiki/Network_layer, 접속일자 2018-07-28

6. Transport layer, Wikipedia, https://en.wikipedia.org/wiki/Transport_layer, 접속일자 2018-07-28

7. Session layer, Wikipedia, https://en.wikipedia.org/wiki/Session_layer, 접속일자 2018-07-28

8. Presentation layer, Wikipedia, https://en.wikipedia.org/wiki/Presentation_layer, 접속일자 2018-07-28

9. 도메인 네임 시스템, Wikipedia, https://ko.wikipedia.org/wiki/도메인 네임 시스템, 접속일자 2018-07-28

10. 전송 계층 보안, Wikipedia, https://ko.wikipedia.org/wiki/전송 계층 보안, 접속일자 2018-07-28

반응형
728x90
300x250

[Linux] Centos 5.3(32bit), Ubuntu 9.04(64bit) - Apache 2.x + PHP 5.3 + MySQL, 라이브러리 설치하기

태스트 환경1 :

운영체제 : Centos 5.3(32bit)
CPU : AMD Athlon 64 x2 3600
RAM : 2GB

태스트 환경2 :
운영체제 : Ubuntu 9.04(64bit)
CPU : Atom 230 x2
RAM : 1GB


필수 사용 라이브러리 :


Libmcrypt(암호화 라이브러리)


다운로드를 받을만한 위치로 이동합니다.


다운로드 받기 :
http://www.mysql.com (MYSQL 홈페이지)
ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.11.tar.gz
ftp://ftp.neowiz.com/pub/languages/php/

미러링 서버 제공 : 네오위즈

다운로드 받기


wget 주소 (MySQL 5.x 버전) 다운로드
tar xvfz mysql-5.1.version.tar.gz                  (압축 풀기)

wget ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.11.tar.gz      (Apache 2.2.11) 다운로드
tar xvzf httpd-2.2.11.tar.gz                       (압축 풀기)

wget ftp://ftp.neowiz.com/pub/languages/php/     (Php-5.2.10) 다운로드
tar xvzf php-5.2.10.tar.gz                        (압축 풀기)



 


 


 


 


 


 


 
(기타 라이브러리 재 연동)
/usr/local/php/bin/pear upgrade-all
/usr/local/php/bin/pear install DB File Mail Mail_Mime
/usr/local/php/bin/pear install MDB2 MDB2_Driver_mysql MDB2_Driver_mysqli
/usr/local/php/bin/pear install HTTP_Request XML_RPC


최종 수정 : 2009년 9월 22일

반응형

+ Recent posts