HTTP secure, HTTP 프로토콜의 암호화된 버전
클라이언트와 서버 간의 모든 소통을 암호화 하기 위해 SSH나 TLS사용
1. 클라이언트 → 서버로 랜덤 데이터와 사용 가능한 암호화 방식을 보냄
2. 서버 → 클라이언트로 랜덤 데이터 , 사용할 암호화 방식과 SSL 인증서를 보냄
3. 클라이언트는 서버에게 받은 인증서의 CA가 자신이 들고 있는 CA 리스트에 있는지 확인하고 , 있다면 CA의 공개키로 복호화. 이는 곧 CA 비밀키에 의해 암호화됐다는 것이므로 인증서의 신원을 보증해줌. 공개키 암호화 방식
4. 클라이언트는 자기가 보낸 랜덤 데이터와 서버로부터 받은 랜덤 데이터를 조합하여 임시 키 (pre master secret key)를 만듬.
5. 만들어진 임시 키를 인증서의 공개키로 암호화하여 서버에게 보냄
6. 서버는 자신이 들고 있던 비밀키로 임시 키를 복호화
7. 이로써 클라이언트와 서버는 동일한 임시 키를 공유하게 되는데, 일련의 과정을 거쳐 master secret 값을 만들고 세션 키를 생성
8. 이렇게 만들어진 세션 키로 암호화된 데이터를 주고받는다. 대칭키 암호화 방식
9.세션이 종료되면 클라이언트와 서버 모두 세션 키를 폐기
[root@server ~]# yum -y install mod_ssl
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
[root@server ~]# firewall-cmd --add-service=https
[root@server ~]# firewall-cmd --relaod
/etc/httpd/conf.d/ssl.conf에 구성
[root@server ~]# cd
/etc/httpd/conf.d/
[root@server conf.d]# ls
... ssl.conf ...
[root@server conf.d]# openssl genrsa -out private.key 2048
Generating RSA private key, 2048 bit long modulus
.....................................+++
...............................................................................................................................+++
e is 65537 (0x10001)
[root@server conf.d]# openssl req -new -key private.key -out cert.csr
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) [XX]:kr
State or Province Name (full name) []:admin
Locality Name (eg, city) [Default City]:seoul
Organization Name (eg, company) [Default Company Ltd]:seoul
Organizational Unit Name (eg, section) []:adm
Common Name (eg, your name or your server's hostname) []:server.test.example.com
Email Address []:admin@test.example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@server conf.d]# openssl x509 -req -signkey private.key -in cert.csr -out cert.crt
Signature ok
subject=/C=kr/ST=admin/L=seoul/O=seoul/OU=adm/CN=server.test.example.com/emailAddress=admin@test.example.com
Getting Private key
[root@server conf.d]# chmod 600 private.key cert.crt
[root@server conf.d]# mv private.key /etc/pki/tls/private/
[root@server conf.d]# mv cert.* /etc/pki/tls/certs/
ksr, csr, crt파일 모두 지정된 경로에 저장해야 함
# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName server.test.example.com:443
...
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/pki/tls/certs/cert.crt
...
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/pki/tls/private/private.key
httpd 재실행
systemcl restart httpd
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
데이터를 효율적으로 저장/관리하기 위한 시스템
[root@server ~]# yum -y install mariadb-server
[root@server ~]# systemctl start mariadb
[root@server ~]# firewall-cmd --add-service=mysql
[root@server ~]# firewall-cmd --reload
[root@server ~]# mysql_secure_installation
/ect/my.cnf
[root@server ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
autocommit=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[root@server ~]# mysql -u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
생성된 데이터베이스 확인
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| test1 |
+--------------------+
5 rows in set (0.00 sec)
지정한 데이터베이스를 사용하겠다는 명령어
지정한 데이터베이스 내의 생성된 테이블을 확인
MariaDB [test]> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| users |
+----------------+
1 row in set (0.00 sec)
Data Manipulatinon Language
테이블에 관리하기를 원하는 자료들을 입력, 수정, 삭제, 조회하는 명령어
MariaDB [test]> INSERT INTO 테이블명
-> VALUES (컬럼리스트 VALUES리스트);
MariaDB [test]> INSERT INTO 테이블명
-> VALUES (전체 컬럼에 넣을 VALUES리스트);
정보를 수정
MariaDB [test]> UPDATE 테이블명
-> SET 수정할 칼럼명 = 수정할 값;
데이터 삭제
MariaDB [test]> DELETE [FROM] 삭제를 원하는 정보가 있는 테이블명
입력한 데이터를 조회
MariaDB [test]> SELECT [ALL/DISTINCT] 칼럼명1,칼럼명2, ..
-> FROM 테이블명;
DISTINCT 옵션은 중복 제거
MariaDB [test]> SELECT *
-> FROM 테이블명;
조회 시, 칼럼명을 지정한 이름으로 조회
MariaDB [test]> SELECT 칼럼명 AS 원하는 이름
-> FROM 테이블명;
자료 조회 시 지정하는 조건문
MariaDB [test]> SELECT 칼럼명 AS 원하는 이름
-> FROM 테이블명
-> WHERE 조건식;
WHERE 절에 조건식을 사용할 때 사용되는 연산자
NOT을 붙이면 참 거짓이 반대로