SSLError: Can't connect to HTTPS URL because the SSL module is not available on google app engine

26,933

Solution 1

If you're using GAE's Sockets, you can get SSL support without any hacks by simply loading the SSL library.

Simply add this to your app.yaml file:

libraries:
- name: ssl
  version: latest

This is documented on Google Cloud's OpenSSL Support documentation.

Solution 2

This blog post details a solution. From the blog post:

The problem is GAE has a “whitelist” of select standard libraries. SSL (_ssl, _socket) is not one of them. So, we need to tweak the sandbox environment (dangerous) carefully. The below code uses the standard Python socket library instead of the GAE-provided in the development environment. Modify [or create] appengine_config.py:

import os

# Workaround the dev-environment SSL
#   http://stackoverflow.com/q/16192916/893652
if os.environ.get('SERVER_SOFTWARE', '').startswith('Development'):
    import imp
    import os.path
    from google.appengine.tools.devappserver2.python import sandbox

    sandbox._WHITE_LIST_C_MODULES += ['_ssl', '_socket']
    # Use the system socket.
    psocket = os.path.join(os.path.dirname(os.__file__), 'socket.py')
    imp.load_source('socket', psocket)

Solution 3

Jan Dolejsi,

If you're using GAE's Sockets, you can get SSL support without any hacks by simply loading the SSL library.

Simply add this to your app.yaml file:

libraries: - name: ssl
- version: latest

If you're experiencing RAND_egd error, just change "-version: latest" in your app.yaml, to "-version: 2.7"!

Share:
26,933
Belvi Nosakhare
Author by

Belvi Nosakhare

Updated on May 22, 2020

Comments

  • Belvi Nosakhare
    Belvi Nosakhare almost 4 years

    Want to use wechat sdk to create menu

    WeChat.create_menu({
         "button":[
         {    
              "type":"click",
              "name":"Daily Song",
              "key":"V1001_TODAY_MUSIC"
          },
          {
               "type":"click",
               "name":" Artist Profile",
               "key":"V1001_TODAY_SINGER"
          },
          {
               "name":"Menu",
               "sub_button":[
               {    
                   "type":"view",
                   "name":"Search",
                   "url":"http://www.soso.com/"
                },
                {
                   "type":"view",
                   "name":"Video",
                   "url":"http://v.qq.com/"
                },
                {
                   "type":"click",
                   "name":"Like us",
                   "key":"V1001_GOOD"
                }]
           }]
     })
    

    Currently not work because of this error:

    Traceback (most recent call last):
      File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in Handle
        result = handler(dict(self._environ), self._StartResponse)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1519, in __call__
        response = self._internal_error(e)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__
        rv = self.handle_exception(request, response, e)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__
        rv = self.router.dispatch(request, response)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
        return route.handler_adapter(request, response)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__
        return handler.dispatch()
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch
        return self.handle_exception(e, self.app.debug)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
        return method(*args, **kwargs)
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechatAPIHandler.py", line 72, in post
        "key":"V1001_GOOD"
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 355, in create_menu
        data=menu_data
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 949, in _post
        **kwargs
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 907, in _request
        "access_token": self.access_token,
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 849, in access_token
        self.grant_token()
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 273, in grant_token
        "secret": self.__appsecret,
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 935, in _get
        **kwargs
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/wechat_sdk/basic.py", line 917, in _request
        **kwargs
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/requests/api.py", line 50, in request
        response = session.request(method=method, url=url, **kwargs)
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/requests/sessions.py", line 465, in request
        resp = self.send(prep, **send_kwargs)
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/requests/sessions.py", line 573, in send
        r = adapter.send(request, **kwargs)
      File "/base/data/home/apps/s~project-boom/1.384461758981660124/requests/adapters.py", line 431, in send
        raise SSLError(e, request=request)
    SSLError: Can't connect to HTTPS URL because the SSL module is not available.
    

    python request module is include in the app engine project. Using python 2.7. Being look for ways to solve this problem but have not find very clear way to solve the problem yet