Putting Chrome OS behind SSL based webfilters

Educational institutions, particularly the K12 are stuck between a rock and a hard place. They are always in search of ways to open up newer technologies to students, but don't want to give up their ability to manage and filter what students can see or do. As a father of two I approve that.

While Chrome OS does take security very seriously and tries very hard to discourage "man in the middle attack", it does provide an industry tested feature to allow educators to filter web content for students in its recent version of Chrome OS. To understand how it works in Chrome OS, I'll first explain how the Chrome OS works internally.

Chrome OS devices, as most of you already know, has two distinct components. The Chrome browser is what provides most of the UI, but deep inside it also has an operating system built on top of linux. Among other things that OS is responsible for, auto-updates and security are two of the most important. 

The web filtering feature which Chrome OS provides for our enterprise and schools users allows all "user session" traffic from the browser to be intercepted, but doesn't allow any of the system requests to be intercepted in the same way.

Network setup

To get a chromebook to work correctly in an environment with webfilter, its important to let webfilter know which hosts chromebook would connect to for which it won't tolerate SSL inspection. Google has published a set of domain names here which can be used for this purpose.

Note that whitelisting by IP addresses (netblocks) is not good enough. The IP addresses mapped to these hosts keep changing and the only reliable way to whitelist them is by whitelisting the domain names as it is. Most webfilters (including some transparent webfilters) support this and if you are not sure, contact your proxy/webfilter provider to understand how to do it.

Quick test

Once the network is setup, import your custom root CA cert into the browser using certificate
manager under "Authorities" and make sure you enable "Trust this certificate for identifying websites." Then go to any website which you think should be intercepted and try to see if browser threw any error. Even if it didn't throw an error, check at the certificate details and confirm that it was signed by your webfilter.

Broader test

Once the tests confirm that everything is working as expected, its time to do a broader test using management console. To prepare for this test, I would recommend picking a small set of users who are are ok with brief interruption (in case something goes wrong) and are willing to provide you with detailed feedback to help you debug the issue.

In your admin panel, go to Chrome's "Advance settings" section and then "Networks". Pick the OU where all of your test users are and then click on "Manage Certificates" button on the
top right corner. 

Upload your certificate and check the box for "Use the certificate as an HTTPS certificate authority". 

The example on the right shows my setup where I'm using zscaler's cloud based webfilter.

The final test to make sure this is good, would be to move these users to a network where there is no direct network access.  Have them be forced to go through the proxy/webfilter and see if anything breaks. 

Let this configuration stay like this for a few days/weeks and collect feedback on whether users noticed any other side effects. For example make sure devices are getting updates (which is critical) and that user users can be added any time.

Complete the transition

Once everything has been tested, apply the certificate to more and more OUs until the transition is complete.


There are few caveats you should watch out for
  1. Even though this policy is being applied as a user policy, it will only work on devices which are enrolled to the same domain. This is one of the most common reasons for the feature not working.  This also means that if the device was unenrolled, it may cause network connectivity failures.
  2. Since this is a user policy, other users using the same device will not get this feature automatically. Each user has to be moved into an OU where this certificate is installed.

More info


Popular posts from this blog

Chrome Frame - How to add command line parameters

Creating your first chrome app on a Chromebook

Brewers CAP Theorem on distributed systems