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