Šimone,

Thanks for this. I understand your concern about being responsible for the SSL 
side and can just about imagine the technical complexity of getting it done. 
Many thanks also for the trial build, I very much appreciate you doing this - 
once I can get it tested on an M1 machine, I will report back but it’s 
encouraging to hear that it is feasible and solves the issue.

As for Apple’s approach to SSL, my understanding from the bits of information I 
have been able to find is that they provide very little 
guarantee/stability/documentation around this, as also attested by the flip 
flopping you mentioned.

Thanks again.

Kind regards
Petr

> On 11. 1. 2022, at 22:12, Simon Urbanek <simon.urba...@r-project.org> wrote:
> 
> Petře,
> 
> thanks, for the detailed analysis. It is rather curious that the issue 
> appears only on _newer_ systems - we are more used to issues due to older CA 
> chains and similar. It looks like an Apple bug on specific systems, so 
> hopefully it will be fixed eventually. In general I was trying to avoid 
> having to supply our own SSL library since that opens a whole can of worms - 
> on one hand due the dependency issues (which libraries get compiled against 
> what) and on the other hand we become responsible for security updates.
> 
> Thanks to Jeroen for the work-around (CURL_SSL_BACKEND=SecureTransport), 
> using the native API is certainly preferred, there have been several issues 
> with both OpenSSL and LibreSSL before. It seems that Apple has been 
> flip-flopping with libcurl a lot - on El Capitan it was shipped with 
> SecureTransport, on High-Sierra with LibreSSL, on Catalina and higher with 
> both, but Libre the default.
> 
> I am somewhat less apprehensive to use static libcurl for R than SSL 
> libraries as the fallout is a bit smaller. As a trial I have added static 
> curl[2] which is close to the Apple build minus MultiSSL to big-sur nightly 
> builds of R[3] and as expected that solves the problem. It may not be 
> entirely unproblematic for package space, because packages often forget to 
> prepend  --static when using static builds of libraries, and so do other 
> dependencies that may use curl, but I'll see what comes out of it.
> 
> Cheers,
> Šimon
> 
> [1] - https://github.com/R-macos/recipes
> [2] - https://github.com/R-macos/recipes/blob/add-ons/recipes/curl
> [3] - https://mac.r-project.org/
> 
> 
> 
>> On 10/01/2022, at 11:22 PM, Petr Bouchal <pbouc...@gmail.com> wrote:
>> 
>> Dear all,
>> 
>> In brief: on Monterey, R cannot reach certain web domains due to a bug in 
>> Libre SSL - and perhaps not relying on system curl/openssl in R would be a 
>> systematic solution to this and símilar issues.
>> 
>> Specifically: on MacOS Monterey 12.1 using R 4.1.2, download.file() and 
>> other functions that rely on system-provided curl/openssl/Libre SSL 
>> (including in the curl package) have been failing on specific domains. 
>> 
>> So running 
>> 
>> download.file(“https://www.czso.cz/”, tempfile()) 
>> 
>> returns: 
>> 
>> status was ‘SSL connect error’
>> 
>> the underlying error being
>> 
>> error:06FFF089:digital envelope routines:CRYPTO_internal:bad key length.
>> 
>> This is caused by the Libre SSL bundled in MacOS Monterey and also affects 
>> several other domains, most notably https://libzip.org.
>> 
>> It is clearly an OS bug but infortunately also a situation where it affects 
>> R users because of how R relates to system libraries and is very difficult 
>> to work around.
>> 
>> It has manifested on CRAN (causing a package archival) and Github outside of 
>> R, so is not caused by a specific machine. It can be replicated on both M1 
>> and Intel and also occurs when using curl in the system command line. 
>> 
>> The czso.cz domain is the Czech Statistical Office, which makes it quite 
>> important for a number of users, also of a package I maintain (czso) which 
>> relies on accessing this domain. I have reported this to the server admin 
>> but since the problem is in the OS, I do not expect them to be able to help. 
>> I am not an expert in web security so cannot tell if there is anything in 
>> the certificates which could be causing this. In browsers, no such issue 
>> occurs and the server is configured correctly as per ssllabs.com testing. I 
>> have also reported to Apple but it is unclear whether they will fix this 
>> given the rare nature of the issue.
>> 
>> It is difficult to work around even on individual machines as replacing the 
>> system curl/openssl requires steps beyond what a most users are comfortable 
>> with (or should be doing to begin with). Using HTTP instead of HTTPS does 
>> not work, nor does using curl —insecure and equivalents.
>> 
>> This brings back the question of whether R on MacOS should include its own 
>> openssl instead of relying on the system-provided library. This has been 
>> discussed on the r-devel list: 
>> https://stat.ethz.ch/pipermail/r-devel/2020-June/079657.html.
>> 
>> Apple also recommends against relying on shared openssl, if I understand 
>> this correctly: https://developer.apple.com/forums/thread/89051. Given 
>> Apple’s approach to openssl/Libre SSL in MacOS (the bundled Libre SSL 
>> version is 3 years old), such hard-to-handle issues are likely to reappear 
>> over time. (I don’t have in-depth knowledge of how R is compiled, so 
>> apologies for any inaccuracies; hopefully it is clear what I mean.)
>> 
>> I’d be grateful for any thoughts on how this might be handled in the 
>> specific case and perhaps generally.
>> 
>> Kind regards
>> Petr Bouchal
>> 
>> _______________________________________________
>> R-SIG-Mac mailing list
>> R-SIG-Mac@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>> 
> 

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to