没有项目描述
cernrequests的Python项目详细描述
CERN请求
启用使用requests而不必配置cern根证书。
灵感来自certifi、requests-kerberos和cern-sso-python
根证书束是从linuxsoft cern page复制的,也可以通过从cafiles.cern.ch/cafiles下载cern网格证书颁发机构文件手动创建。
安装
需要Python 2.7
或Python 3.4+
pip install cernrequests
先决条件
请求a Grid User Certificate并转换为公钥和私钥:
mkdir -p ~/private openssl pkcs12 -clcerts -nokeys -in myCertificate.p12 -out ~/private/usercert.pem openssl pkcs12 -nocerts -in myCertificate.p12 -out ~/private/userkey.tmp.pem openssl rsa -in ~/private/userkey.tmp.pem -out ~/private/userkey.pem
证书必须是passwordless。
用法
示例
importcernrequestsurl="https://<your-cern-website>"response=cernrequests.get(url)
cookies示例
如果要访问需要CERN单点登录Cookie的网站,可以执行以下操作:
importcernrequestsurl="https://<your-cern-website>"cookies=cernrequests.get_sso_cookies(url)response=cernrequests.get(url,cookies=cookies)
替代用法
如果您想直接使用requests
而不使用cern包装,您可以通过执行以下操作获得完全相同的功能:
importrequestsfromcernrequestsimportcertsurl="https://<your-cern-website>"cert=certs.default_user_certificate_paths()ca_bundle=certs.where()response=requests.get(url,cert=cert,verify=ca_bundle)
配置
默认的用户证书路径是用于回退的第一个~\private\
和~\.globus\
。默认的public密钥文件名是usercert.pem
,默认的private密钥文件名是userkey.pem
可以通过设置CERN_CERTIFICATE_PATH
环境变量来配置默认网格用户证书路径。
例如:
exportCERN_CERTIFICATE_PATH=${HOME}/my_custom_folder
这仍然假设您的文件名是usercert.pem
和userkey.pem
。
在.bashrc
中写下这一行,使配置持久化
或者,您也可以直接在代码中指定路径:
importcernrequestsurl="https://<your-cern-website>"cert="my/custom/path/cert.pem"# Public key pathkey="my/custom/path/key.pem"# Private key pathcernrequests.get(url,cert=(cert,key))
这样,您甚至可以使用自定义名称,如cert.pem
和key.pem
参考文献
- http://docs.python-requests.org/en/master/
- https://certifi.io/en/latest/
- https://github.com/cerndb/cern-sso-python
- https://linux.web.cern.ch/linux/docs/cernssocookie.shtml
- http://linuxsoft.cern.ch/cern/centos/7/cern/x86_64/repoview/CERN-CA-certs.html
- https://ca.cern.ch/ca/