-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implemented a function to ensure certifi is installed in the virtual environment during package installation. This feature includes a script to install or update a set of Root Certificates for the SSL module, utilizing certificates provided by the certifi package.
- Loading branch information
1 parent
a5c14cb
commit d7142d5
Showing
2 changed files
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
"""Install the Python SSL Certificates""" | ||
# install_certifi.py | ||
# | ||
# sample script to install or update a set of default Root Certificates | ||
# for the ssl module. Uses the certificates provided by the certifi package: | ||
# https://pypi.org/project/certifi/ | ||
|
||
import os | ||
import os.path | ||
import ssl | ||
import stat | ||
import subprocess | ||
import sys | ||
|
||
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 | ||
) | ||
|
||
|
||
def main(): | ||
"""Creates a CA bundle file for the ssl module from a set of PEM files.""" | ||
openssl_dir, openssl_cafile = os.path.split( | ||
ssl.get_default_verify_paths().openssl_cafile | ||
) | ||
|
||
print(" -- pip install --upgrade certifi") | ||
subprocess.check_call( | ||
[sys.executable, "-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"] | ||
) | ||
|
||
import certifi | ||
|
||
# change working directory to the default SSL directory | ||
os.chdir(openssl_dir) | ||
relpath_to_certifi_cafile = os.path.relpath(certifi.where()) | ||
print(" -- removing any existing file or link") | ||
try: | ||
os.remove(openssl_cafile) | ||
except FileNotFoundError: | ||
pass | ||
print(" -- creating symlink to certifi certificate bundle") | ||
os.symlink(relpath_to_certifi_cafile, openssl_cafile) | ||
print(" -- setting permissions") | ||
os.chmod(openssl_cafile, STAT_0o775) | ||
print(" -- update complete") | ||
|
||
|
||
if __name__ == "__main__": | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters