https가 적용된 사이트에서 iframe에 http url이 있어서 해당 iframe이 동작하지 않았다.
콘솔로그를 확인해보니, 콘솔창에서 아래와 같은 오류가 나왔다.
Mixed Content: The page at ' https://www.-----.--- ' was loaded over HTTPS, but requested an insecure frame ' http://www.-----.---'. This request has been blocked; the content must be served over HTTPS.
볼 키워드는
Mixed Content
This request has been blocked
the content must be served over HTTPS.
결국은 '혼합된 컨텐츠다, 해당 요청은 차단됬다, 컨텐츠는 https여야한다.' 이다.
즉, https를 사용하는 사이트에서 컨텐츠부분에 http통신하는 부분이 있어 해당 http요청이 차단되었다는 의미이다.
https 으로 보안이 되있는데, 보안에 취약한 http와 통신할 수 없다는 것이다.
해결방법
★ http요청을 https로 변경한다.(해당 url이 https를 제공하지 않는다면 이 방법은 패스)
HTTPContent-Security-Policy(CSP)upgrade-insecure-requests지시문은 사이트의 모든 비보안 URL(HTTP를 통해 제공되는)을 보안 URL(HTTPS를 통해 제공되는)로 대체된 것처럼 처리하도록 사용자 에이전트에 지시합니다.이 지시문은 재작성해야 하는 안전하지 않은 레거시 URL이 많은 웹 사이트를 위한 것입니다.
설치
# yum install wget
...
Is this ok [y/d/N] : y
...
톰캣최신버전 업데이트받을 위치 이동해서 아래와 같이 다운로드
$ cd /home
$ wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.81/bin/apache-tomcat-8.5.81.tar.gz
tar.gz 압축풀기
$ tar -zxvf apache-tomcat-8.5.81.tar.gz
기존라이브러리 백업
$ mv /home/www-apache-tomcat-8.5.57/lib /home/www-apache-tomcat-8.5.57/lib_back
기존톰캣에 업데이트된 라이브러리만 교체
$ cp -r /home/apache-tomcat-8.5.81/lib /home/www-apache-tomcat-8.5.57/
최신라이브러리를 넣어준 기존 톰캣디렉토리명을 최신버전인 8.5.81로 변경해주기
$ mv /home/www-apache-tomcat-8.5.57 /home/www-apache-tomcat-8.5.81
4. 톰캣 버전 8.5 수동 업그레이드시 lib 폴더만 갈아껴주고 재시작을 하면된다는 말이 있는데, 내 경우에는 재시작시 아래와 같은 오류가 발생했다
12-Aug-2022 11:04:34.860 심각 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8553]] org.apache.catalina.LifecycleException: 구성요소 [Connector[HTTP/1.1-8553]]을(를) 초기화하지 못했습니다. at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:139) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:571) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:874) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.startup.Catalina.load(Catalina.java:646) at org.apache.catalina.startup.Catalina.load(Catalina.java:669) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472) Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.buf.UriUtil.isAbsoluteURI(Ljava/lang/String;)Z at org.apache.tomcat.util.file.ConfigFileLoader.getInputStream(ConfigFileLoader.java:77) at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:198) at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:207) at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:282) at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:246) at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:106) at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:72) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:205) at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1221) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1234) at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:230) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:633) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:80) at org.apache.catalina.connector.Connector.initInternal(Connector.java:1112) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) ... 12 more
(주의할 것은 bin폴더 gz파일와 jar파일만 옮기고 bin폴더 통째로 옮기지 않기. catalina.sh파일 등 설정이 필요할 파일들이 있기때문)
기존 bin 백업
$ mv /home/www-apache-tomcat-8.5.81/bin /home/www-apache-tomcat-8.5.81/bin_back
wget로 다운받아서 압축 풀은 새 톰캣 bin으로 이동
$ cd /home/apache-tomcat-8.5.81/bin
기존톰캣에 업데이트된 라이브러리만 교체
$ cp *.jar /home/www-apache-tomcat-8.5.81/bin
$ cp *.tar.gz /home/www-apache-tomcat-8.5.81/bin
6. 그리고나서 바꿔준 파일들을 교체해준 bin폴더와 lib폴더의 파일들 권한들도 기존 파일들 권한이랑 비교해서 동일하지않으면 권한을 맞춰준다.
# 현재 최신 버전 다운로드
wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz --no-check-certificate
# 압축 해제
tar xvfz openssl-1.1.1q.tar.gz
# 압축 해제된 경로로 이동하여 소스 컴파일 진행
cd /home/myproject/openssl-1.1.1q
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
# 설치 진행
make && make install
# 주요 심볼릭 링크 설정 필요
ln -s /usr/local/ssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/ssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl