How to secure access to MinIO server with TLS
TLS를 사용하여 MinIO 서버에 대한 액세스를 보호하는 방법
This guide explains how to configure MinIO Server with TLS certificates on Linux and Windows platforms.
이 가이드에서는 Linux 및 Windows 플랫폼에서 TLS 인증서를 사용하여 MinIO 서버를 구성하는 방법을 설명합니다.
Install MinIO Server
MinIO 서버 설치
Use an Existing Key and Certificate with MinIO
MinIO에서 기존 키 및 인증서 사용
Generate and use Self-signed Keys and Certificates with MinIO
MinIO를 사용하여 자체 서명된 키 및 인증서 생성
Install Certificates from Third-party CAs
타사 CA의 인증서 설치
1. Install MinIO Server
1. MinIO 서버 설치
Install MinIO Server using the instructions in the MinIO Quickstart Guide.
MinIO 빠른 시작 가이드의 지침을 사용하여 MinIO 서버를 설치합니다.
2. Use an Existing Key and Certificate with MinIO
2. MinIO로 기존 키 및 인증서 사용
This section describes how to use a private key and public certificate that have been obtained from a certificate authority (CA).
이 섹션에서는 CA (인증 기관)에서 얻은 개인 키와 공개 인증서를 사용하는 방법에 대해 설명합니다.
If these files have not been obtained, skip to 3. Generate Self-signed Certificates or generate them with Let's Encrypt using these instructions: Generate let's encypt certificate using concert for minio.
이러한 파일을 얻지 못한 경우, 3. 자체 서명된 인증서 생성으로 건너뛰거나 다음 지침을 사용하여 Let's Encrypt로 생성합니다: Minio용 Concert를 사용하여 Let's Encrypt 인증서를 생성합니다.
Copy the existing private key and public certificate to the certs directory. The default certs directory is:
기존 개인 키와 공개 인증서를 certs 디렉터리에 복사합니다. 기본 인증서 디렉터리는 다음과 같습니다.
Linux: ${HOME}/.minio/certs
리눅스: ${HOME}/.minio/certs
Windows: %%USERPROFILE%%\.minio\certs
윈도우: %%USERPROFILE%%\.minio\certs
Note:
메모
Location of custom certs directory can be specified using --certs-dir command line option.
--certs-dir 명령줄 옵션을 사용하여 사용자 정의 인증서 디렉터리의 위치를 지정할 수 있습니다.
Inside the certs directory, the private key must by named private.key and the public key must be named public.crt.
certs 디렉터리 내에서 개인 키의 이름은 private.key로 지정되어야 하고 공개 키의 이름은 public.crt로 지정되어야 합니다.
A certificate signed by a CA contains information about the issued identity (e.g. name, expiry, public key) and any intermediate certificates. The root CA is not included.
CA가 서명한 인증서에는 발급된 ID (예를 들어 이름, 만료, 공개 키) 및 중간 인증서에 대한 정보가 포함되어 있습니다. 루트 CA는 포함되지 않습니다.
3. Generate and use Self-signed Keys and Certificates with MinIO
3. MinIO를 사용하여 자체 서명된 키 및 인증서 생성 및 사용
This section describes how to generate a self-signed certificate using various tools:
이 섹션에서는 다양한 도구를 사용하여 자체 서명된 인증서를 생성하는 방법을 설명합니다.
3.1 Use generate_cert.go to Generate a Certificate
3.1 generate_cert.go를 사용하여 인증서 생성
3.2 Use OpenSSL to Generate a Certificate
3.2 OpenSSL을 사용하여 인증서 생성
3.3 Use OpenSSL (with IP address) to Generate a Certificate
3.3 OpenSSL (IP 주소 포함)을 사용하여 인증서 생성
3.4 Use GnuTLS (for Windows) to Generate a Certificate
3.4 GnuTLS (Windows용)를 사용하여 인증서 생성
Note:
메모:
MinIO only supports keys and certificates in PEM format on Linux and Windows.
MinIO는 Linux 및 Windows에서 PEM 형식의 키와 인증서만 지원합니다.
MinIO doesn't currently support PFX certificates.
MinIO는 현재 PFX 인증서를 지원하지 않습니다.
3.1 Use generate_cert.go to Generate a Certificate
3.1 generate_cert.go를 사용하여 인증서 생성
Download generate_cert.go.
generate_cert.go를 다운로드하세요.
generate_cert.go is a simple Go tool to generate self-signed certificates, and provides SAN certificates with DNS and IP entries:
generate_cert.go는 자체 서명된 인증서를 생성하고 SAN 인증서에 DNS 및 IP 항목을 제공하는 간단한 Go 도구입니다.
go run generate_cert.go -ca --host "10.10.0.3"
A response similar to this one should be displayed:
다음과 유사한 응답이 표시되어야 합니다.
2018/11/21 10:16:18 wrote cert.pem
Rename cert.pem to public.crt and key.pem to private.key.
cert.pem의 이름을 public.crt로 바꾸고 key.pem의 이름을 private.key로 바꿉니다.
3.2 Use OpenSSL to Generate a Certificate
3.2 OpenSSL을 사용하여 인증서 생성
Use one of the following methods to generate a certificate using openssl:
openssl을 사용하여 인증서를 생성하려면 다음 방법 중 하나를 사용하세요:
3.2.1 Generate a private key with ECDSA
3.2.1 ECDSA를 사용하여 개인 키 생성
3.2.2 Generate a private key with RSA
3.2.2 RSA를 사용하여 개인 키 생성
3.2.3 Generate a self-signed certificate
3.2.3 자체 서명된 인증서 생성
3.2.1 Generate a private key with ECDSA.
3.2.1 ECDSA를 사용하여 개인 키를 생성합니다.
Use the following command to generate a private key with ECDSA:
ECDSA로 개인 키를 생성하려면 다음 명령을 사용하십시오.
openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key
A response similar to this one should be displayed:
다음과 유사한 응답이 표시되어야 합니다.
read EC key
EC 키 읽기
writing EC key
EC 키 쓰기
Alternatively, use the following command to generate a private ECDSA key protected by a password:
또는 다음 명령을 사용하여 패스워드로 보호되는 개인 ECDSA 키를 생성하십시오.
openssl ecparam -genkey -name prime256v1 | openssl ec -aes256 -out private.key -passout pass:PASSWORD
Note: NIST curves P-384 and P-521 are not currently supported.
참고: NIST 곡선 P-384 및 P-521은 현재 지원되지 않습니다.
3.2.2 Generate a private key with RSA.
3.2.2 RSA를 사용하여 개인 키를 생성합니다.
Use the following command to generate a private key with RSA:
RSA로 개인 키를 생성하려면 다음 명령을 사용하십시오.
openssl genrsa -out private.key 2048
A response similar to this one should be displayed:
다음과 유사한 응답이 표시되어야 합니다.
Generating RSA private key, 2048 bit long modulus
RSA 개인 키 생성, 2048비트 길이 모듈러스
............................................+++
...........+++
e is 65537 (0x10001)
Alternatively, use the following command to generate a private RSA key protected by a password:
또는 다음 명령을 사용하여 패스워드로 보호되는 개인 RSA 키를 생성하십시오.
openssl genrsa -aes256 -out private.key 2048 -passout pass:PASSWORD
Note: When using a password-protected private key, the password must be provided through the environment variable MINIO_CERT_PASSWD using the following command:
참고: 패스워드로 보호된 개인 키를 사용하는 경우 다음 명령을 사용하여 환경 변수 MINIO_CERT_PASSWD를 통해 패스워드를 제공해야 합니다.
export MINIO_CERT_PASSWD=
The default OpenSSL format for private encrypted keys is PKCS-8, but MinIO only supports PKCS-1. An RSA key that has been formatted with PKCS-8 can be converted to PKCS-1 using the following command:
개인 암호화 키의 기본 OpenSSL 형식은 PKCS-8이지만 MinIO는 PKCS-1만 지원합니다. PKCS-8로 포맷된 RSA 키는 다음 명령을 사용하여 PKCS-1로 변환할 수 있습니다.
openssl rsa -in private-pkcs8-key.key -aes256 -passout pass:PASSWORD -out private.key
3.2.3 Generate a self-signed certificate.
3.2.3 자체 서명된 인증서를 생성합니다.
Use the following command to generate a self-signed certificate and enter a passphrase when prompted:
다음 명령을 사용하여 자체 서명된 인증서를 생성하고 메시지가 표시되면 암호를 입력합니다.
openssl req -new -x509 -days 3650 -key private.key -out public.crt -subj "/C=US/ST=state/L=location/O=organization/CN="
Note: Replace
참고:
Alternatively, use the command below to generate a self-signed wildcard certificate that is valid for all subdomains under
또는 아래 명령을 사용하여
Wildcard certificates are useful for deploying distributed MinIO instances, where each instance runs on a subdomain under a single parent domain.
와일드카드 인증서는 각 인스턴스가 단일 상위 도메인의 서브 도메인에서 실행되는 분산 MinIO 인스턴스를 배포하는 데 유용합니다.
openssl req -new -x509 -days 3650 -key private.key -out public.crt -subj "/C=US/ST=state/L=location/O=organization/CN=<*.domain.com>"
3.3 Use OpenSSL (with IP address) to Generate a Certificate
3.3 OpenSSL (IP 주소 포함)을 사용하여 인증서 생성
This section describes how to specify an IP address to openssl when generating a certificate.
이 섹션에서는 인증서를 생성할 때 openssl에 IP 주소를 지정하는 방법을 설명합니다.
3.3.1 Create a configuration file.
3.3.1 구성 파일을 생성생성합니다.
Create a file named openssl.conf with the content below. Change IP.1 to point to the correct IP address:
아래 내용으로 openssl.conf라는 파일을 만듭니다. 올바른 IP 주소를 가리키도록 IP.1을 변경합니다.
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = Somewhere
O = MyOrg
OU = MyOU
CN = MyServerName
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = 127.0.0.1
3.3.2 Run openssl and specify the configuration file:
3.3.2 openssl을 실행하고 구성 파일을 지정합니다:
openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout private.key -out public.crt -config openssl.conf
3.4 Use GnuTLS (for Windows) to Generate a Certificate
3.4 GnuTLS (Windows용)를 사용하여 인증서 생성
This section describes how to use GnuTLS on Windows to generate a certificate.
이 섹션에서는 Windows에서 GnuTLS를 사용하여 인증서를 생성하는 방법을 설명합니다.
3.4.1 Install and configure GnuTLS.
3.4.1 GnuTLS를 설치하고 구성합니다.
Download and decompress the Windows version of GnuTLS from here.
여기에서 Windows 버전의 GnuTLS를 다운로드하고 압축을 해제하세요.
Use PowerShell to add the path of the extracted GnuTLS binary to the system path:
PowerShell을 사용하여 추출된 GnuTLS 바이너리의 경로를 시스템 경로에 추가합니다.
setx path "%path%;C:\Users\MyUser\Downloads\gnutls-3.4.9-w64\bin"
Note: PowerShell may need to be restarted for this change to take effect.
참고: 이 변경 사항을 적용하려면 PowerShell을 다시 시작해야 할 수도 있습니다.
3.4.2 Generate a private key:
3.4.2 개인 키 생성:
Run the following command to generate a private .key file:
다음 명령을 실행하여 프라이빗 .key 파일을 생성합니다:
certtool.exe --generate-privkey --outfile private.key
A response similar to this one should be displayed:
다음과 유사한 응답이 표시되어야 합니다.
Generating a 3072 bit RSA private key...
3072비트 RSA 개인 키 생성 중...
3.4.3 Generate a public certificate:
3.4.3 공개 인증서 생성:
Create a file called cert.cnf with the content below. This file contains all of the information necessary to generate a certificate using certtool.exe:
아래 내용으로 cert.cnf라는 파일을 생성합니다. 이 파일에는 certtool.exe를 사용하여 인증서를 생성하는 데 필요한 모든 정보가 포함되어 있습니다.
# X.509 Certificate options
# X.509 인증서 옵션
# DN options
# DN 옵션
# The organization of the subject.
# 주제의 구성.
organization = "Example Inc."
# The organizational unit of the subject.
# 주제의 조직 단위입니다.
#unit = "sleeping dept."
#unit = "수면실"
# The state of the certificate owner.
# 인증서 소유자의 상태입니다.
state = "Example"
# The country of the subject. Two letter code.
# 대상 국가. 두 글자 코드입니다.
country = "EX"
# The common name of the certificate owner.
# 인증서 소유자의 일반 이름입니다.
cn = "Sally Certowner"
# In how many days, counting from today, this certificate will expire.
# 오늘부터 계산하면 이 인증서는 며칠 후에 만료됩니다.
expiration_days = 365
# X.509 v3 extensions
# X.509 v3 확장
# DNS name(s) of the server
# 서버의 DNS 이름
dns_name = "localhost"
# (Optional) Server IP address
# (선택사항) 서버 IP 주소
ip_address = "127.0.0.1"
# Whether this certificate will be used for a TLS server
# 이 인증서를 TLS 서버에 사용할지 여부
tls_www_server
Run certtool.exe and specify the configuration file to generate a certificate:
certtool.exe를 실행하고 구성 파일을 지정하여 인증서를 생성합니다.
certtool.exe --generate-self-signed --load-privkey private.key --template cert.cnf --outfile public.crt
4. Install Certificates from Third-party CAs
4. 타사 CA의 인증서 설치
MinIO can connect to other servers, including MinIO nodes or other server types such as NATs and Redis.
MinIO는 MinIO 노드나 NAT 및 Redis와 같은 다른 서버 유형을 포함하여 다른 서버에 연결할 수 있습니다.
If these servers use certificates that were not registered with a known CA, add trust for these certificates to MinIO Server by placing these certificates under one of the following MinIO configuration paths:
이러한 서버가 알려진 CA에 등록되지 않은 인증서를 사용하는 경우, 해당 인증서를 다음 MinIO 구성 경로 중 하나에 배치하여 MinIO 서버에 해당 인증서에 대한 신뢰를 추가합니다.
Linux: ~/.minio/certs/CAs/
Windows: C:\Users\\.minio\certs\CAs
Explore Further
더 자세히 살펴보세요
TLS Configuration for MinIO server on Kubernetes
Kubernetes의 MinIO 서버에 대한 TLS 구성
MinIO Client Complete Guide
MinIO 클라이언트 전체 가이드
Generate Let's Encrypt Certificate
Let's Encrypt 인증서 생성
Setup nginx Proxy with MinIO Server
MinIO 서버로 nginx 프록시 설정