URLOpenError[SSL:1129]

Error: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1129)>

SOLUTION 1 : (Courtesy of Kern Germain)

  • If you are running from a studio with security measures, please make sure that:

    • OpenSSL is updated

    • Local certificate is updated

  • Example:

# Install Certifi
pip install certifi

# Or to upgrade #
pip install --upgrade certifi
  • Copy Certifi's Certificate On the System (as root)

import certifi
import os
import ssl

openssl_cafile = ssl.get_default_verify_paths().openssl_cafile
os.symlink(certifi.where(), openssl_cafile)
os.chmod(openssl_cafile, STAT_0o775)

# and to put the correct chmod:
import stat
STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
             | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP
             | stat.S_IROTH |                stat.S_IXOTH )
os.chmod(openssl_cafile, STAT_0o775)
  • Restart Maya, and run xgt Command again

/import xgtc
import xgToolsUI_user_sub
xgToolsUI_user_sub.XgtRun()

SOLUTION 2:

Kern Germain also provided a simpler setup, by adding certifi to the Maya environment, and add this env var in Maya: ​ SSL_CERT_FILE="/path/to/certifi/cacert.pem" Then a set-up menu in userSetup.py (specific to Linux)

from maya import cmds
from maya import mel
import ssl
import os

def createMenu():
    if cmds.about(batch=True):
        # don't create menu in batch mode
        return
    if cmds.menu("GroomMenu", exists=True):
        cmds.deleteUI("GroomMenu")
    _ssl_cert_paths = ssl.get_default_verify_paths()
    _ssl_cert_file = os.getenv(_ssl_cert_paths.openssl_cafile_env) or _ssl_cert_paths.openssl_cafile
    enabled = os.path.isfile(_ssl_cert_file)
    groom_menu = cmds.menu(
            "GroomMenu",
            label="Grooming Tools",
            parent=mel.eval("$retvalue = $gMainWindow;")
        )
    cmds.menuItem(
        label="Launch Grooming Tools",
        parent=groom_menu,
        command="import xgtc;import xgToolsUI_user_sub;xgToolsUI_user_sub.XgtRun();",
        sourceType="python",
        enable=enabled)
    if not enabled:
        cmds.menuItem(
        label=f'Cannot launch Grooming Tools, contact your TD and ask them to install "{_ssl_cert}"',
        parent=groom_menu)


maya.cmds.evalDeferred("createMenu()")

Last updated