암호화/복호화 작업 : HTTPS는 암호화를 사용하여 통신을 보호합니다. 암호화 및 복호화 작업은 CPU를 많이 사용하므로, 작업량이 많아질수록 서버의 성능에 영향을 줄 수 있습니다.
핸드쉐이크 오버헤드 : HTTPS 연결을 설정하는 과정에서 핸드쉐이크라는 절차를 거치게 됩니다. 이 과정에서 전송되는 데이터양이 많기 때문에, 핸드쉐이크 오버헤드가 발생할 수 있습니다.
캐시 불가능 : HTTPS에서는 캐시가 불가능합니다. 왜냐하면, 캐시된 데이터가 변조될 가능성이 있기 때문입니다. 따라서, 매번 요청할 때마다 서버에서 새로운 데이터를 가져와야 하므로 성능에 영향을 줄 수 있습니다.
CDN 사용에 제약 : HTTPS 연결을 설정할 때, 도메인 이름이 반드시 일치해야 합니다. 따라서, CDN을 사용하는 경우 도메인 이름이 변경되므로 HTTPS를 사용하기 어렵습니다. 이러한 경우에는 CDN에서 HTTPS를 지원하도록 설정해야 합니다.
이러한 성능 이슈를 해결하기 위해, 하드웨어 가속 기술을 사용하거나, 암호화 알고리즘을 최적화하는 등의 방법을 사용할 수 있습니다.
하드웨어 가속 기술(Hardware Acceleration): HTTPS의 성능 이슈 중에서 가장 대표적인 것은 암호화/복호화 과정에서 발생하는 부하입니다. 이러한 부하를 해결하기 위해 하드웨어 가속 기술을 사용합니다. 하드웨어 가속 기술은 SSL/TLS 암호화/복호화 과정을 CPU 대신 별도의 하드웨어 장치에서 처리함으로써 처리 속도를 향상시킵니다.
암호화 알고리즘 최적화: HTTPS에서 사용되는 대표적인 암호화 알고리즘으로는 AES, RSA, SHA 등이 있습니다. 이러한 알고리즘들은 성능 향상을 위해 최적화될 수 있습니다. 예를 들어, RSA 알고리즘은 키의 크기에 따라 처리 속도가 크게 달라질 수 있기 때문에 키 크기를 최소화하는 것이 좋습니다.
캐시: HTTPS의 경우 매번 인증서를 다운로드해야 하기 때문에 초기 연결 시간이 길어질 수 있습니다. 이를 해결하기 위해서는 캐시를 이용해야 합니다. 캐시를 이용하면 인증서를 다운로드하지 않고 기존에 다운로드한 인증서를 사용함으로써 연결 시간을 단축시킬 수 있습니다.
세션 재사용: HTTPS는 기본적으로 연결마다 새로운 세션을 생성합니다. 이러한 세션 생성 과정은 처리 시간이 오래 걸립니다. 따라서 HTTPS에서는 기존에 생성된 세션을 재사용하는 방법을 이용해 성능을 개선할 수 있습니다.
CDN(Content Delivery Network): HTTPS에서 가장 큰 성능 이슈 중 하나는 지리적으로 떨어진 클라이언트와 서버 간의 지연 시간입니다. 이를 해결하기 위해 CDN(Content Delivery Network)을 이용합니다. CDN은 전 세계에 분산된 캐시 서버를 이용하여 클라이언트와 가까운 서버에서 콘텐츠를 제공함으로써 지연 시간을 최소화합니다.
앞의 두 가지는 HTTPS의 성능 이슈를 해결하고 동시에 보안성 문제를 높이지 않는 방법이고 뒤의 세 가지는 HTTPS에서 적용이 가능하나 보안성 문제와 관련된 취약점이 존재할 수 있어 충분한 보안 검사가 필요합니다.