在R代码中传递pfx证书或在R中将pfx证书转换为pem

brjng4g3  于 2023-04-18  发布在  其他
关注(0)|答案(2)|浏览(261)

所以我调用一个API,要求我有一个pfx证书链接到我的浏览器或Postman,如果我调用该API。我想以编程方式做到这一点。如果有一个代码在R中,让我使用我现有的pfx证书,同时传递post请求或函数,我可以使用它来转换我现有的pfx证书到pem证书。请帮助我解决这个问题。

tvmytwxo

tvmytwxo1#

我也遇到了同样的问题,我是这样解决的:

library(openssl)
library(httr)
library(usethis)

# set up openssl in .Renviron
usethis::edit_r_environ() #opens .Renviron file in Rstudio
# include this line into .Renviron file:
CURL_SSL_BACKEND="openssl"

# read your pfx certificate 
cert <- openssl::read_p12(file = ".../yourCertificate.pfx", password = "yourKey")

# convert pfx to cert and key pem files to use in httr calls
openssl::write_pem(cert$cert, "my_cert.pem")
openssl::write_pem(cert$key, "my_key.pem")

# send request
GET("https://...", config = config(sslcert =  "my_cert.pem", sslkey = "my_key.pem"), verbose())
wj8zmpe1

wj8zmpe12#

2023年4月,get方法返回错误:

schannel: Failed to import cert file my_cert.pem, last error is 0x80092002

这似乎与curl 7.55.1中引入的问题有关(参见https://stackoverflow.com/a/71496170/5956120)在curl 8.0.1中使用证书再次工作。
解决方法可以在R中实现:

# request via external tool curl (https://curl.se/windows/)
responseText <- system("<pathToCurl>/curl-8.0.1_6-win64-mingw/bin/curl.exe --cert my_cert.pem --key my_key.pem https://... -sS", intern = TRUE)
responseJson <- paste(responseText, collapse = '')

相关问题