Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update publicsuffix dependency #1374

Closed
mbwalas opened this issue Jan 12, 2016 · 19 comments
Closed

Update publicsuffix dependency #1374

mbwalas opened this issue Jan 12, 2016 · 19 comments

Comments

@mbwalas
Copy link
Contributor

mbwalas commented Jan 12, 2016

Hi,
wanted to confirm what is the current version of public suffix list that is being used by the authority for certificates limits issuance. Does it include this commit publicsuffix/list@9636089 ?

@jsha
Copy link
Contributor

jsha commented Jan 12, 2016

It does not, yet.

@jsha jsha closed this as completed Jan 12, 2016
@mbwalas
Copy link
Contributor Author

mbwalas commented Jan 12, 2016

Can we update it? Can you point me to the last commit in which it was updated? I can see only this issue: #1251

@jsha
Copy link
Contributor

jsha commented Jan 12, 2016

Yep, that's the last update commit. Note: we normally update from golang/net's upstream, however, it may be easier to start doing updates directly in our own fork at https://github.com/letsencrypt/net. We're a bit short-handed this week, but I'll treat this as a request to update it for next week when more of my colleagues are around to review. Thanks!

@jsha jsha reopened this Jan 12, 2016
@jsha jsha changed the title Public suffix list version in Lets encrypt Update publicsuffix dependency Jan 12, 2016
@mbwalas
Copy link
Contributor Author

mbwalas commented Jan 12, 2016

Thanks, one more question: how long does it take to then release the new version of the CA (or to consume by running version the updated config)?

@jsha
Copy link
Contributor

jsha commented Jan 12, 2016 via email

@mbwalas
Copy link
Contributor Author

mbwalas commented Jan 18, 2016

Hi Jacob, any update on this, can I help you with update of suffix list?

@mbwalas
Copy link
Contributor Author

mbwalas commented Jan 19, 2016

@kuba for helping to resolve this.

@jmhodges
Copy link
Contributor

I know you must feel frustrated but we have lots of constraints and demands on our time. Please have some empathy for the team.

You heard what our deploy schedule was. We'll be doing a deploy and you will get an update when we do.

Pulling unrelated folks into this discussion isn't going to make things move faster. There isn't anything they'll be able to do to change our deploy schedule. It'll just distract them from the other work they can do.

@jmhodges
Copy link
Contributor

To be more clear, you can check out https://letsencrypt.status.io/pages/history/55957a99e800baa4470002da for when deploys go out.

@mbwalas
Copy link
Contributor Author

mbwalas commented Jan 19, 2016

I assumed there need to be a code change done in order to pull new version of public suffix list, isn't that the case?
If not, then I am happy to wait for next release. (It is not about "frustration" - not at all.)
If this is an automated change that I could possibly perform then happy to do that. If it doesn't require a code change then let it roll.

@kuba
Copy link
Contributor

kuba commented Jan 19, 2016

Problem here is that upstream https://go.googlesource.com/net/+log/master/publicsuffix updated table.go around 6 weeks ago, so publicsuffix/list@9636089 could not possibly be included in it. @mbwalas, you need to escalate to Go team and make sure they update that package. Once it happens Boulder team will need to merge https://github.com/letsencrypt/net/tree/master/publicsuffix with upstream, then

"ImportPath": "github.com/letsencrypt/net/publicsuffix",
will need to be updated, then code will be rolled out to staging, then to production. In short: I still think there is around 1 or 2 weeks of waiting until this will be deployed anywhere, at least.

@jmhodges, not so random folk + I hope above helps to understand the situation better ;) Somewhere lost in translation was that particular PSL commit we're after, hence a bit of misunderstanding in the discussion. Also, do we happen to have any fast lane mode that circumvents the whole route I described above?

@jmhodges
Copy link
Contributor

Nope, we don't. That's the route. Thanks!

@bradfitz
Copy link

I sent out https://golang.org/cl/18724 to update Go's publicsuffix list. Waiting on a review.

gopherbot pushed a commit to golang/net that referenced this issue Jan 20, 2016
Updates letsencrypt/boulder#1374

Change-Id: I853e08d94cbe235a3a1bbff28e1b121c4589b810
Reviewed-on: https://go-review.googlesource.com/18724
Reviewed-by: Andrew Gerrand <adg@golang.org>
@bradfitz
Copy link

Done ^^

mbwalas added a commit to mbwalas/net that referenced this issue Jan 20, 2016
Updates letsencrypt/boulder#1374

Change-Id: I853e08d94cbe235a3a1bbff28e1b121c4589b810
Reviewed-on: https://go-review.googlesource.com/18724
Reviewed-by: Andrew Gerrand <adg@golang.org>
(cherry picked from commit 78e1654)
@weppos
Copy link
Contributor

weppos commented Feb 10, 2016

@jmhodges I'm both a PSL committer and a Go user, and I'd like to contribute. As Go embeds the PSL in the source itself, I'm planning to provide periodic updates to the Go repo (assuming that also is fine for the Go team).

I mailed a PR yesterday for review with the latest changes, and cced @bradfitz
https://go-review.googlesource.com/#/c/19410/

What is the best way for me to contribute the patches to this repo? Do you want me to provide separate updates via single PRs, or do you prefer to keep this repo in sync with /x/net/?

I'm currently automating the process of validating, linting and testing the PSL, and I'll also explore some kind of automatic packaging into a periodic Go-repo update. I'm open to requests and feedback.

@bradfitz
Copy link

I'm a little concerned by regular updates to this huge blob in the golang.org/x/net git repo. It adds about 0.1MB to our history per commit, which isn't much, but would add up if we're doing this regularly.

It's also annoying to review these, since I basically have to re-do the CL whenever somebody sends it to me to verify it hasn't been tampered with: I have to at least cherry-pick it in, then update the test files (which at least doesn't take 10 minutes like the other file), and then run the tests.

I'm wondering if we should add a different mode to Go's publicsuffix package where instead of baking in the data structure, it instead regularly polls or otherwise subscribes to the master list and keeps it all in memory (in a larger format, not the 10 minutes of CPU "crushed" form). Then boulder would always be up-to-date with what's live in the public suffix list, without needing to wait for Go.

/cc @nigeltao

@jsha
Copy link
Contributor

jsha commented Feb 10, 2016

Thanks for the offer @weppos! And your concerns about frequent updates in golang.org/x/net make sense, @bradfitz. Let's try and find a better way. I opened #1479 to discuss alternatives.

@nigeltao
Copy link

It may be worth having a golang.org/x/net/publicsuffix/parser package that can build a (not as optimized) table at runtime instead of at code-gen time. I don't really have time to work on it any time soon, but I'm happy to review any proposals and API designs.

In any case, AFAIK letsencrypt doesn't have to use the golang.org/x/net/publicsuffix package. You could simply fork the package, with a note that your flavor is simply updated more frequently than the upstream flavor. The code-gen script should be easy to run yourself at whatever cadence you like.

@rolandshoemaker
Copy link
Contributor

Closing in favor of #1479.

jsha pushed a commit that referenced this issue Jun 30, 2016
This PR replaces the `x/net/publicsuffix` package with `weppos/publicsuffix-go`.

The conversations that leaded to this decision are #1479 and #1374. To summarize the discussion, the main issue with `x/net/publicsuffix` is that the package compiles the list into the Go source code and doesn't provide a way to easily pull updates (e.g. by re-parsing the original PSL) unless the entire package is recompiled.

The PSL update frequency is almost daily, which makes very hard to recompile the official Golang package to stay up-to-date with all the changes. Moreover, Golang maintainers expressed some concerns about rebuilding and committing changes with a frequency that would keep the package in sync with the original PSL. See #1374 (comment)

`weppos/publicsuffix-go` contains a compiled version of the list that is updated weekly (or more frequently). Moreover, the package can read and parse a PSL from a String or a File which will effectively decouple the Boulder source code with the list itself. The main benefit is that it will be possible to update the definition by simply downloading the latest list and restarting the application (assuming the list is persisted in memory).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants