Known Issues

2022-06-10

Known Issues With dataone R Package Version 2.0

Error Using X.509 Certificates

Using an X.509 certificate for DataONE authentication on certain versions of Mac OS X can cause the following error:

Error in curl::curl_fetch_memory(url, handle = handle) : 
Problem with the local SSL certificate 

(Note that it is recommended that you use DataONE authentication tokens instead of an X.509 certificate if possible.)

Changes in the Mac OS X system libraries in OS X Mavericks have taken away support of these X.509 certificates. A workaround to make these certificates usable on Mac OS X with R is to install a version of the curl R package that supports these certificates.

On Mac OS X, the libcurl library can be installed with either Mac Ports package manager or the HomeBrew package manager. The HomeBrew package manager can be significantly faster to install but either one will work provided the directions shown below are followed.

You can check if you have MacPorts installed by entering the following command in a terminal window:

port version

Create new curl package using MacPorts

If MacPorts is being used on your system, the following commands can be entered to install a curl package that can read the certificate and allow them to be used by the dataone package for authentication to a DataONE node. In a terminal window enter the commands:

sudo port install curl
Sys.setenv(LIB_DIR="/opt/local/lib")
Sys.setenv(INCLUDE_DIR="/opt/local/include")
install.packages("curl", type="source")
library(curl)
library(dataone)

# Remove the environment variables as they are no longer needed.
Sys.setenv(LIB_DIR="")
Sys.setenv(INCLUDE_DIR="")

At this point you should be able to use X.509 Certificates.

Create new curl package using HomeBrew

The HomeBrew software can be installed with the following command entered at a terminal window:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Once HomeBrew has been installed, you can get the required curl libraries by entering the command:

brew install curl --with-openssl
brew link curl --force

In the R console enter the commands:

Sys.setenv(LIB_DIR="/usr/local/opt/curl/lib")
Sys.setenv(INCLUDE_DIR="/usr/local/opt/curl/include")
install.packages("curl", type="source")
library(curl)
library(dataone)

# Remove the environment variables as they are no longer needed.
Sys.setenv(LIB_DIR="")
Sys.setenv(INCLUDE_DIR="")

At this point you should be able to use X.509 Certificates.