我使用SecKeyGeneratePair函数为基于Swift的iOS应用程序生成了私钥和公钥.
然后,我使用iOS CSR生成生成证书签名请求,我的服务器以PEM格式回复证书链.
我使用以下代码将PEM证书转换为DER格式:
var modifiedCert = certJson.replacingOccurrences(of: "-----BEGIN CERTIFICATE-----", with: "")
modifiedCert = modifiedCert.replacingOccurrences(of: "-----END CERTIFICATE-----", with: "")
modifiedCert = modifiedCert.replacingOccurrences(of: "\n", with: "")
let dataDecoded = NSData(base64Encoded: modifiedCert, options: [])
Run Code Online (Sandbox Code Playgroud)
现在,我应该使用DER-data创建证书 let certificate = SecCertificateCreateWithData(nil, certDer)
我的问题如下:如何将证书与我在开头创建的私钥连接,并获得这两个(密钥和证书)所属的身份?
也许,将证书添加到钥匙串并获取身份使用SecItemCopyMatching?我已经按照SecIdentityRef程序中提出的程序进行了操作
编辑:
将证书添加到钥匙串时,我得到状态响应0,我相信这意味着证书已添加到钥匙串中.
let certificate: SecCertificate? = SecCertificateCreateWithData(nil, certDer)
if certificate != nil{
let params : [String: Any] = [
kSecClass as String : kSecClassCertificate,
kSecValueRef as String : certificate!
]
let …Run Code Online (Sandbox Code Playgroud) 我正在尝试在构建阶段使用参数化我的dockerfiles并在Docker-compose中使用参数.例如在Docker compose中我定义了一个名为bpp的服务,如下所示:
bpp:
build:
context: .
dockerfile: Dockerfile.bpp
args:
gp : 8080
image: serv/bpp
restart: always
depends_on:
- data
links:
- data
Run Code Online (Sandbox Code Playgroud)
我正在尝试将名为gp的参数传递给Dockerfile.bpp,其中我在启动Python应用程序时使用参数,暴露端口等.例如在dockerfile.bpp中尝试公开端口gp如下:
EXPOSE gp
Run Code Online (Sandbox Code Playgroud)
但是,当通过命令docker-compose build构建docker文件时,我收到以下错误:错误:服务'bpp'无法构建:无效的containerPort:gp
似乎参数gp在dockerfile中不可见.有什么建议?