SSL(암호화된 소켓 계층, Secure Socket Layer)은 인터넷에서 정보를 안전하게 전송하기 위한 프로토콜입니다. TLS(전송 계층 보안, Transport Layer Security)은 SSL의 후속 버전으로, SSL과 호환되며 더욱 안전하게 데이터를 전송할 수 있도록 개선된 보안 프로토콜입니다.
SSL/TLS는 클라이언트와 서버 간의 통신에서 데이터를 암호화하여 제3자가 데이터를 엿듣거나 조작하는 것을 방지합니다. SSL/TLS를 사용하면 웹 사이트에서 민감한 정보를 전송할 때 안전한 연결을 사용할 수 있으며, 이를 통해 개인 정보 및 비즈니스 정보가 노출되거나 변조되는 것을 방지할 수 있습니다.
SSL/TLS는 공개키 암호화 방식을 사용하여 데이터를 암호화합니다. 클라이언트와 서버 간의 통신에서는 서버 측에서 발급한 인증서를 사용하여 클라이언트와 서버 간의 인증을 수행합니다. 클라이언트는 서버가 발급한 인증서의 유효성을 확인한 후, 공개키를 사용하여 데이터를 암호화하여 서버로 전송합니다. 서버는 자신의 개인키를 사용하여 데이터를 복호화하여 응답합니다.
즉, SSL/TLS는 인터넷에서 데이터를 안전하게 전송하기 위해 사용되는 보안 프로토콜입니다. 웹 사이트에서 민감한 정보를 처리하는 경우 SSL/TLS를 사용하여 데이터를 보호할 수 있습니다.
fedora 기준
1. certbot 이용
2. openssl 이용
나는 openssl을 사용해봐야겠다 ~!
설치
$ sudo dnf install openssl
확인방법 : openssl version
개인키 생성시
2048비트 RSA 개인키 이외에도 다양한 알고리즘을 사용하여 개인키를 생성할 수 있습니다. 대표적인 알고리즘으로는 ECDSA(Elliptic Curve Digital Signature Algorithm), EdDSA(Edwards-curve Digital Signature Algorithm), RSA-PSS 등이 있습니다.
ECDSA 및 EdDSA는 고성능 및 더 작은 키 크기로 암호화를 수행할 수 있는 장점이 있습니다. OpenSSL을 사용하여 ECDSA 및 EdDSA 개인키를 생성하는 방법은 다음과 같습니다.
$ sudo openssl ecparam -genkey -name <타원 곡선 이름> -out <개인키 파일 이름>.key
$ sudo openssl genpkey -algorithm ed25519 -out <개인키 파일 이름>.key
장단점
RSA, ECDSA, EdDSA는 모두 공개키 암호화 알고리즘으로, 개인키와 공개키를 사용하여 데이터를 암호화하고 복호화하는 방식으로 작동합니다. 하지만 각각의 알고리즘은 특징과 장단점이 있습니다.
- RSA RSA는 가장 널리 사용되는 공개키 암호화 알고리즘 중 하나입니다. RSA는 안정성과 널리 사용되는 알고리즘이라는 이점이 있습니다. 그러나 RSA는 키 크기가 크고 연산이 느리다는 단점이 있으며, 큰 수 인수 분해가 가능할 경우 보안 취약점이 될 수 있습니다.
- ECDSA ECDSA는 타원 곡선 암호화를 사용하는 공개키 암호화 알고리즘으로, RSA보다 작은 키 크기와 빠른 연산 속도를 제공합니다. 또한 ECDSA는 RSA와 달리 개인키를 저장하고 사용하기 쉽다는 장점이 있습니다. 그러나 타원 곡선의 선택에 따라 보안성이 크게 영향을 받을 수 있으며, 부적절한 타원 곡선을 사용할 경우 보안 취약점이 될 수 있습니다.
- EdDSA EdDSA는 Edwards-curve를 사용하는 공개키 암호화 알고리즘으로, ECDSA보다 더 작은 키 크기와 더 빠른 연산 속도를 제공합니다. 또한, 공개키와 개인키의 길이가 동일하다는 특징을 가지고 있습니다. 그러나 아직까지는 널리 사용되는 알고리즘이 아니며, 다른 알고리즘에 비해 상대적으로 보안성이 낮다는 우려가 있습니다.
따라서 각각의 알고리즘을 선택할 때는 사용하는 환경과 요구 사항을 고려하여 적절한 알고리즘을 선택해야 합니다. 또한, 보안 취약점을 최소화하기 위해서는 최신 버전의 알고리즘을 사용하고, 보안 업데이트를 정기적으로 적용하는 것이 좋습니다.
타원곡선암호화란
타원 곡선 암호화(Elliptic Curve Cryptography, ECC)는 공개키 암호화 기술 중 하나입니다. 타원 곡선은 수학적인 곡선을 의미하며, 이 곡선 위에서 수학적 연산을 통해 암호화와 복호화를 수행합니다. 타원 곡선은 RSA와 같은 다른 공개키 암호화 알고리즘보다 작은 키 크기와 더 높은 보안성을 제공합니다.
타원 곡선은 직교 좌표계나 프로젝티브 좌표계 등 다양한 형태의 좌표계를 사용할 수 있습니다. 타원 곡선 암호화에서는 두 개의 키를 사용합니다. 하나는 개인키(Private Key)이며, 다른 하나는 공개키(Public Key)입니다. 개인키는 암호화와 복호화를 수행하는 키이고, 공개키는 개인키를 통해 생성되며, 데이터를 암호화하는 데 사용됩니다.
타원 곡선 암호화는 RSA와 같은 다른 알고리즘에 비해 작은 키 크기를 사용하기 때문에, 데이터 전송 속도가 빠르고, 저장 공간이 적게 필요합니다. 또한, 타원 곡선은 이산 로그 문제(Discrete Logarithm Problem)에 기반한 암호화 알고리즘이기 때문에, RSA와 같은 다른 알고리즘에 비해 더 높은 보안성을 제공합니다.
타원 곡선 암호화는 SSL/TLS 인증서와 같은 인증서를 발급하고, 인증서를 검증하는 데도 사용됩니다. 또한, IoT와 같은 작은 장치에서 사용하기 적합한 암호화 알고리즘이기 때문에, 최근에는 IoT 분야에서도 많이 사용되고 있습니다.
키 생성
$ openssl ecparam -genkey -name prime256v1 | openssl ec -out <개인키 파일 이름>.key
이제 개인키를 이용해 CSR 생성
CSR은 SSL 인증서를 발급받기 위해 필요한 인증 요청서입니다. CSR은 개인키와 함께 SSL 인증서 발급 기관에 제출하여, SSL 인증서를 발급받을 수 있습니다.
CSR을 생성할 때 필수로 작성해야 하는 정보는 다음과 같습니다.
1. Common Name(CN): SSL 인증서가 사용될 도메인 이름을 입력합니다. 예를 들어, www.example.com 과 같은 형식으로 입력합니다.
2. Organization(O): 조직의 이름을 입력합니다. 예를 들어, Example, Inc.와 같은 형식으로 입력합니다.
3. Organizational Unit(OU): 조직 내의 부서나 그룹을 입력합니다. 예를 들어, IT 부서와 같은 형식으로 입력합니다.
4. City/Locality(L): 조직의 소재지 도시 또는 지역 이름을 입력합니다.
5. State/Province(S): 조직이 위치한 주 또는 지방 이름을 입력합니다.
6. Country(C): 조직이 위치한 국가를 ISO 3166-1 alpha-2 코드 형식으로 입력합니다. 예를 들어, 미국은 "US", 한국은 "KR"과 같이 입력합니다.
CSR에는 이 외에도 선택적으로 추가 정보를 입력할 수 있습니다. 다만, 이 정보는 SSL 인증서 발급 기관에서 검증할 수 있기 때문에 정확하게 입력해야 합니다. SSL 인증서 발급 기관은 일반적으로 이 정보를 검증하기 위해, 전화 인증 또는 이메일 인증을 요구할 수 있습니다.
다음과 같이 CSR 정보를 영어로 작성할 수 있습니다.
- Common Name(CN): www.example.com
- Organization(O):
- Organizational Unit(OU):
- City/Locality(L): Gunpo-si
- State/Province(S): Gyeonggi-do
- Country(C): KR
Common Name은 도메인 이름으로 입력.
(
SSL 인증서에서 Common Name(CN) 필드는 도메인 이름 또는 서브 도메인 이름으로 작성해야 합니다. IP 주소로는 작성할 수 없습니다.
IP 주소로 SSL 인증서를 사용하려면, Subject Alternative Name(SAN) 필드에 IP 주소를 추가해야 합니다. SAN 필드는 추가적인 도메인 이름 또는 IP 주소를 지정할 수 있는 필드로, 하나의 SSL 인증서에서 여러 개의 도메인 이름과 IP 주소를 사용할 수 있게 해줍니다.
하지만, 일반적으로는 도메인 이름을 사용하는 것이 좋습니다. IP 주소를 사용하면, IP 주소가 변경될 경우 SSL 인증서를 다시 발급받아야 하는 불편함이 있기 때문입니다. 도메인 이름을 사용하면, 도메인 이름이 변경되더라도 SSL 인증서를 다시 발급받지 않아도 됩니다.
)
가비아나 카페24와 같은 사이트에서 도메인 신청하면 된다.
나는 일단 개발만 할거라 이건 나중에~
'개발환경' 카테고리의 다른 글
[리눅스/페도라(fedora server) 설치/mobaxterm 사용법 등 ] 리눅스 설치 방법(기록용/의식의 흐름대로 ,,) (0) | 2023.04.28 |
---|