简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。
设置基于证书的API访问
贡献者
建议更改
必须使用基于证书的身份验证、而不是用于REST API或NetApp易管理性SDK API访问ONTAP的用户ID和密码身份验证。
作为REST API基于证书的身份验证的替代方法,请使用 "基于OAuth2.0令牌的身份验证"。) |
您可以按以下步骤中所述在ONTAP上生成并安装自签名证书。
步骤
-
使用OpenSSL、通过运行以下命令生成证书:
openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout test.key -out test.pem \> -subj "/C=US/ST=NC/L=RTP/O=NetApp/CN=cert_user" Generating a 2048 bit RSA private key ..............+++ ..........................+++ writing new private key to 'test.key'
此命令将生成名为的公共证书和名为的
test.pem
专用密钥key.out
。公用名CN与ONTAP用户ID相对应。 -
通过运行以下命令并在出现提示时粘贴公共证书的内容、在ONTAP中以隐私增强邮件(prom)格式安装此证书的内容:
security certificate install -type client-ca -vserver cluster1 Please enter Certificate: Press <Enter> when done
-
启用ONTAP以允许客户端通过SSL进行访问、并定义用于API访问的用户ID。
security ssl modify -vserver cluster1 -client-enabled true security login create -user-or-group-name cert_user -application ontapi -authmethod cert -role admin -vserver cluster1
在以下示例中、用户ID
cert_user
现在已启用、可使用经过证书身份验证的API访问。用于显示ONTAP版本的简单易管理性SDK Python脚本cert_user
如下所示:#!/usr/bin/python import sys sys.path.append("/home/admin/netapp-manageability-sdk-9.5/netapp-manageability-sdk-9.5/lib/python/NetApp") from NaServer import * cluster = "cluster1" transport = "HTTPS" port = 443 style = "CERTIFICATE" cert = "test.pem" key = "test.key" s = NaServer(cluster, 1, 30) s.set_transport_type(transport) s.set_port(port) s.set_style(style) s.set_server_cert_verification(0) s.set_client_cert_and_key(cert, key) api = NaElement("system-get-version") output = s.invoke_elem(api) if (output.results_status() == "failed"): r = output.results_reason() print("Failed: " + str(r)) sys.exit(2) ontap_version = output.child_get_string("version") print ("V: " + ontap_version)
该脚本的输出将显示ONTAP版本。
./version.py V: NetApp Release 9.5RC1: Sat Nov 10 05:13:42 UTC 2018
-
要使用ONTAP REST API执行基于证书的身份验证、请完成以下步骤:
-
在ONTAP中、定义http访问的用户ID:
security login create -user-or-group-name cert_user -application http -authmethod cert -role admin -vserver cluster1
-
在Linux客户端上、运行以下命令、以输出形式生成ONTAP版本:
curl -k --cert-type PEM --cert ./test.pem --key-type PEM --key ./test.key -X GET "https://cluster1/api/cluster?fields=version" { "version": { "full": "NetApp Release 9.7P1: Thu Feb 27 01:25:24 UTC 2020", "generation": 9, "major": 7, "minor": 0 }, "_links": { "self": { "href": "/api/cluster" } } }
-