以下はPython 3を使ったシンプルなHTTPSファイルサーバーです：

```
import http.server
import socketserver
import ssl

HOSTNAME = "0.0.0.0"
PORT = 8000
CERT_FILE = "server.pem"
KEY_FILE = "key.pem"
ALLOWED_CLIENT_IP = None

class CustomHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if ALLOWED_CLIENT_IP and self.client_address[0] != ALLOWED_CLIENT_IP:
            self.send_error(403, "Forbidden", "You are not authorized to access this resource")
            return
        
        if self.path.endswith("/download"):
            ALLOWED_CLIENT_IP = self.client_address[0]
            super().do_GET()
        else:
            self.send_error(404, "Not Found", "The requested resource was not found on this server.")

with socketserver.TCPServer((HOSTNAME, PORT), CustomHandler) as httpd:
    httpd.socket = ssl.wrap_socket(httpd.socket, certfile=CERT_FILE, keyfile=KEY_FILE, server_side=True)
    print(f"Serving HTTPS on {HOSTNAME}:{PORT}")
    httpd.serve_forever()
```

このコードでは、http.server.SimpleHTTPRequestHandlerを継承し、do_GETメソッドをオーバーライドするカスタムHTTPリクエスト・ハンドラCustomHandlerを作成しています。このメソッドは、入ってくるリクエストが許可されたクライアントIPアドレス(ALLOWED_CLIENT_IPに格納されている)からのものかどうかをチェックします。入ってくるリクエストが異なるIPアドレスからのものである場合、"Forbidden "エラーを送ります。

リクエストが許可されたIPアドレスからの場合、コードはリクエストされたリソー スがダウンロードエンドポイントかどうかをチェックする。もしそうであれば、ALLOWED_CLIENT_IPを着信IPアドレスに更新し、do_GETの親実装を呼び出します。これにより、要求されたファイルが接続IPアドレスに一度だけ提供される。

要求されたリソースがダウンロード・エンドポイントでない場合、コードは "Not Found "エラーを送信する。

サーバーはセキュアな通信のためにSSLを使用するので、独自のSSL証明書と鍵を生成する必要があります。証明書と鍵のファイルは、スクリプトと同じディレクトリに保存し、それらのファイル名をそれぞれCERT_FILE変数とKEY_FILE変数に指定する必要があります。
Here is a simple HTTPS file server in Python 3 that implements the requirements you specified:

import http.server
import socketserver
import ssl

HOSTNAME = "0.0.0.0"
PORT = 8000
CERT_FILE = "server.pem"
KEY_FILE = "key.pem"
ALLOWED_CLIENT_IP = None

class CustomHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if ALLOWED_CLIENT_IP and self.client_address[0] != ALLOWED_CLIENT_IP:
            self.send_error(403, "Forbidden", "You are not authorized to access this resource")
            return
        
        if self.path.endswith("/download"):
            ALLOWED_CLIENT_IP = self.client_address[0]
            super().do_GET()
        else:
            self.send_error(404, "Not Found", "The requested resource was not found on this server.")

with socketserver.TCPServer((HOSTNAME, PORT), CustomHandler) as httpd:
    httpd.socket = ssl.wrap_socket(httpd.socket, certfile=CERT_FILE, keyfile=KEY_FILE, server_side=True)
    print(f"Serving HTTPS on {HOSTNAME}:{PORT}")
    httpd.serve_forever()


In this code, we create a custom HTTP request handler CustomHandler that extends http.server.SimpleHTTPRequestHandler and overrides the do_GET method. This method checks if the incoming request is from an allowed client IP address (stored in ALLOWED_CLIENT_IP). If the incoming request is from a different IP address, it sends a "Forbidden" error.

If the request is from an allowed IP address, the code checks if the requested resource is the download endpoint. If it is, it updates ALLOWED_CLIENT_IP to the incoming IP address and calls the parent implementation of do_GET. This will serve the requested file once to the connecting IP address.

If the requested resource is not the download endpoint, the code sends a "Not Found" error.

The server uses SSL for secure communication, so you will need to generate your own SSL certificate and key. The certificate and key files should be stored in the same directory as the script and their filenames should be specified in the CERT_FILE and KEY_FILE variables, respectively.