Flash를 사용하여 HTTPS화하여 안드로이드 크롬에서 틀리지 않는 로컬 IP의 SSL 인증서를 만드는 방법

개요

  • 크롬은 보통 제 증명서라고 경고합니다
  • 목표는 안드로이드에서 액세스할 수 있음
  • 비HTTPS 통신 동작이 없는 API를 사용하는 경우 로컬 환경에 HTTPS 서버가 필요한 경우가 있습니다.증명서의 생성에 시간이 걸리기 때문에 제작 방법을 총결해 봅시다.
    이것은 현지에서 한정적으로 사용할 때 유용한 정보다.나는 현지 환경에서 테스트에 사용하는 것이 매우 편리하다고 생각한다.
    위험성과 취약성을 이해하는 기초 위에서 읽으세요.

    컨디션


    이번에는 라떼 파이에 HTTPS화된 플래시를 올린다.
  • RaspberryPi 3B (buster)
  • Flash 시작
  • IP 주소: 192.168.0.12
  • MacBookPro 13 2020(big sur)
  • 스크럽에만 사용
  • Pixel 3a (Android 11)
  • 서버 인증서 생성


    Flash를 시작하는 시스템의 디렉토리에 인증서 또는 키를 생성합니다.다음 명령을 실행하여 생성합니다.
  • 개인 키의 생성
  • openssl genrsa 2048 > server.key
  • 기밀 키에서 서명 요청 생성
  • openssl req -new -key server.key -subj “/C=JP/ST=Some-State/O=Some-Org/CN=192.168.0.12” > server.csr
  • SAN(subject alternative names) 생성 설정 파일
  • subjectnames.txt
    subjectAltName = IP:192.168.0.12
    basicConstraints=CA:TRUE
    
  • 개인 키로 서명 요청을 서명하고 서버 인증서를 생성
  • openssl x509 -days 825 -req -sha256 -in server.csr -signkey server.key -extfile subjectnames.txt -extensions SAN -out server.crt

    인증서 내용 확인


    openssl x509 -in server.crt -text -noout
    SAN의 설정 파일 내용과 동일한 인증서인지 확인합니다.

    Android에 인증서 설치


    애플파이server.crt에서 스마트폰으로 전송할 방법을 강구하다.이번에는 scp로 PC에 옮겨 스마트폰에 전송했다.
    스마트폰으로 파일 애플리케이션의 인증서를 클릭하면 설치가 가능하다.
    설정 > 보안 > 인증서 설치 > CA 인증서

    Flash 코드 쓰기

  • Hello World에 답장하는 코드를 써 보겠습니다.
  • 지금까지의 공사 목록은 다음과 같다.
    - app.py
    - /openssl
      - server.crt
      - server.csr
      - server.key
      - subjectnames.txt
    
    app.py
    from flask import Flask
      app = Flask(__name__)
     	 
      @app.route('/')
      def main():
        return 'Hello world"
     	 
      if __name__ == "__main__":
        app.run(host="0.0.0.0", debug=True, ssl_context=('openssl/server.crt', 'openssl/server.key'))
    
    코드의 실행에는 루트 권한이 필요합니다.sudo python3 app.py스마트폰으로 라주파의 IP 주소를 방문해 SSL 대응 사이트가 표시되는지 확인한다.
    스마트폰에 증서가 추가돼 열람이 가능하다.인증서가 추가되지 않은 PC는 액세스할 수 없습니다.
    이 그룹은 결국 개발 환경에만 쓰일 것이라고 말했다.
    나는 이 글을 써서 지방 환경에서 SSL 환경을 만들 때 mkcert도 사용할 수 있다는 것을 발견했다.
    https://github.com/FiloSottile/mkcert

    참고 자료


    https://piko2.net/blog/?p=256
    https://qiita.com/t-kuni/items/d3d72f429273cf0ee31e
    https://qiita.com/taka_katsu411/items/fb1ad876c0017b9fe49d

    좋은 웹페이지 즐겨찾기